Primeiro, algumas definições:
Um teste de unidade testa as unidades isoladamente de outras unidades, mas o que isso significa não é definido concretamente por nenhuma fonte autorizada, portanto, vamos defini-lo um pouco melhor: se os limites de E / S forem cruzados (se a E / S é rede, disco, tela ou entrada da interface do usuário), há um local semi-objetivo para desenhar uma linha. Se o código depender de E / S, ele estará cruzando o limite de uma unidade e, portanto, precisará zombar da unidade responsável por essa E / S.
Sob essa definição, não vejo uma razão convincente para zombar de coisas como funções puras, o que significa que o teste de unidade se presta a funções puras, ou funções sem efeitos colaterais.
Se você deseja unidades de teste de unidade com efeitos, as unidades responsáveis pelos efeitos devem ser ridicularizadas, mas talvez você deva considerar um teste de integração. Portanto, a resposta curta é: "se você precisar zombar, pergunte a si mesmo se o que você realmente precisa é de um teste de integração". Mas há uma resposta melhor e mais longa aqui, e a toca do coelho é muito mais profunda. Zombar pode ser o meu cheiro de código favorito, porque há muito a aprender com eles.
Code Smells
Para isso, veremos a Wikipedia:
Na programação de computadores, um cheiro de código é qualquer característica no código-fonte de um programa que possivelmente indica um problema mais profundo.
Continua mais tarde ...
"Cheiros são certas estruturas no código que indicam violação dos princípios fundamentais do design e afetam negativamente a qualidade do design". Suryanarayana, Girish (novembro de 2014). Refatoração para cheiros de design de software. Morgan Kaufmann. p. 258
Cheiros de código geralmente não são erros; eles não são tecnicamente incorretos e não impedem o funcionamento do programa. Em vez disso, indicam fraquezas no design que podem retardar o desenvolvimento ou aumentar o risco de bugs ou falhas no futuro.
Em outras palavras, nem todos os odores de código são ruins. Em vez disso, são indicações comuns de que algo pode não ser expresso em sua forma ideal e o cheiro pode indicar uma oportunidade para melhorar o código em questão.
No caso de zombaria, o cheiro indica que as unidades que parecem estar pedindo zombarias dependem das unidades a serem zombadas. Pode ser uma indicação de que não decompusemos o problema em partes atomicamente solucionáveis e que podem indicar uma falha de design no software.
A essência de todo o desenvolvimento de software é o processo de decompor um grande problema em partes menores e independentes (decomposição) e compor as soluções para formar um aplicativo que resolve o grande problema (composição).
A zombaria é necessária quando as unidades usadas para dividir o grande problema em partes menores dependem uma da outra. Dito de outra maneira, a zombaria é necessária quando nossas supostas unidades atômicas de composição não são realmente atômicas e nossa estratégia de decomposição falhou em decompor o problema maior em problemas menores e independentes a serem resolvidos.
O que faz com que zombar de um código cheira não é que exista algo inerentemente errado com zombaria - às vezes é muito útil. O que faz parecer um código é que ele pode indicar uma fonte problemática de acoplamento em seu aplicativo. Às vezes, remover essa fonte de acoplamento é muito mais produtivo do que escrever uma farsa.
Existem muitos tipos de acoplamentos, e alguns são melhores que outros. Entender que as zombarias são um cheiro de código pode ensiná-lo a identificar e evitar os piores tipos no início do ciclo de vida do design do aplicativo, antes que o cheiro se torne algo pior.