SpyOn
Vamos falar da função do Jest que pode ser usada para se criar espiões, como nos filmes!
Last updated
Was this helpful?
Vamos falar da função do Jest que pode ser usada para se criar espiões, como nos filmes!
Last updated
Was this helpful?
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:
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.
É 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.
Eu gosto muito da curiosidade, mesmo que seja o óbvio.
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.