SpyOn
Vamos falar da função do Jest que pode ser usada para se criar espiões, como nos filmes!

Essa função é usada para se criar "espiões": uma função que garante que um determinado método é chamado.
Da documentação oficial do Jest:
Agora, precisamos do teste:
Espiando e mocando
Geralmente, espião somente olha🧐🧐, contudo, Jest possibilita também de se tomar "providências", vamos precisar disso no nosso teste.
Na linha 4, além de espiar na linha 3, dizemos o que deve ser feito: estamos reinscrevendo o método sendo espionado. Por que?? Como será visto, essa abordagem de cadeia é necessária para garantir a execução do Mongoose.
Indo os extra miles
Será se precisamos do encadeamento entre o mock e spy?
É resposta é não, contudo, no caso do Mongoose, vamos precisar devido ao funcionamento interno do Mongo, em forma de queries.
O código abaixo faz o mesmo, contudo separa cada atividade. Para iniciantes, como eu, eu sugiro usar notações como essa, aberta, onde sabemos onde esta o mock, e onde está o spy.
Será se o spy realmente funciona
Eu gosto muito da curiosidade, mesmo que seja o óbvio.
Testando uma cadeia de métodos
Quando comecei a estudar mock/stubs, tive dificuldades de entender a diferença, as definições pareciam apontar para a mesma coisa, até que li o livro de Christian Johansen. Esse autor separa claramente o monitoramento do comportamento vs. estado.
O problema, como vamos ver no caso do Jest, é que nem sempre é linear essa transformação entre teoria e ferramenta. Por isso defendo de programador ler, para não ficar amarrado a nenhum framework. Conhecimento flui, ferramentas vai e vem.
No nosso caso, o que dificultou meu entendimento do Jest, é que precisamos misturar mock com spy para ter o efeito que Christian Johansen chama de behavior verification. Acho que isso seria o famoso mock, e state verification seria o stub; mesmo que esteja errado nessa associação, achei fácil de lembrar e desligar meu cérebro de ficar disparando, quando não entendo algo.


Last updated
Was this helpful?