Marcio Frayze
2 min readMay 31, 2019

--

Parabéns pela iniciativa, com certeza vai ser muito útil!!
Estive no evento ontem e fiquei com algumas dúvidas quanto a isso. A ferramenta é claramente incrível. Tão incrível que fiquei até um pouco preocupado. Meio paradoxal, mas fazia umas coisas tão mágicas que fiquei com receio de incentivar algumas (na minha opinião atual) más práticas.

Me considero meio iniciante ainda em TDD então talvez não esteja enxergando alguns cenários de usos de mocks ou o tamanho ideal da unidade a ser testada.

Mas atualmente tento seguir uma linha "classicist TDD" e costumo criar fakes/stubs/spies/mocks basicamente apenas em camadas que vão ter algum tipo de efeito colateral (como acesso ao banco de dados, integração com outros sistemas, etc). Isolando então essas parte com interfaces e usando inversão de controle pra injetar (via construtor e/ou algum container de injeção de dependências) outro comportamento durante os testes de unidade.
No resto do sistema (camada de negócio) tento seguir conceitos como: uso de value objects, imutabilidade, métodos puros, etc. O que tornam os testes das regras de negócio muito simples. Nesta parte do sistema acabo não mockando nada e deixo que sejam executadas as dependências reais (que também são outros métodos basicamente puros).

As vezes me questiono se, mesmo sendo basicamente funções puras, eu deveria mockar chamadas que não tem uma relação direta com a unidade que estou testando, mas em geral não tenho sentido esta necessidade (pelo menos ainda).

Voltando um pouco à dor inicial: se eu me deparo com um código que preciso mockar um construtor (ou algo assim, meio fora do comum), encaro como um mau cheiro. Será que não deveria injetar alguma dependência nela invertendo o controle e então forçar o comportamento que eu espero? Mock de um construtor parece algo radical demais pra mim e fico com receio das pessoas ao invés de corrigirem um mau cheiro, saiam criando mocks indiscriminadamente, forçando o uso de uma arquitetura inadequada. Claro que "com grandes poderes, vêm grandes responsabilidades", mas as vezes me parece que menos é mais.

Resumindo: fiquei com certa dificuldade de encontrar cenários mais reais onde usaria estas funcionalidades mais avançadas do mockk.

Desculpe pelo comentário gigante e parabéns pela apresentação ontem! Evento foi muito bacana.

--

--

Marcio Frayze
Marcio Frayze

Written by Marcio Frayze

Entusiasta de programação extrema e autor do projeto segunda.tech.

Responses (1)