Eu entendi como funciona a função "spyOn" mas quando usar? Em todos os testes?
Segunda dúvida rápida: "spyOn" é função ou método? Qual a diferença entre função e método?
Eu entendi como funciona a função "spyOn" mas quando usar? Em todos os testes?
Segunda dúvida rápida: "spyOn" é função ou método? Qual a diferença entre função e método?
Oi, Luidi.
Você não precisa usar o spyOn em todos os testes. Na verdade, ele deve ser usado em situações específicas. Enquanto o jest.fn() cria uma função totalmente nova e vazia, o spyOn é utilizado quando você quer observar o comportamento de um método que já existe em um objeto ou módulo, sem necessariamente substituir sua lógica original.
As situações mais comuns para o uso são:
request do SuperTest no exemplo da aula).spyOn observa a função, mas permite que ela execute o código real. Isso é útil se você quer testar a integração, mas precisa de provas de que o método foi acionado.mockRestore() para que a função volte ao seu estado normal, evitando que um teste interfira no outro.Se o seu objetivo é apenas criar um substituto genérico para uma função que não existe ou que você quer isolar completamente, o jest.fn() costuma ser suficiente.
Função vs. Método: Qual a diferença?
Essa é uma distinção conceitual importante na programação.
minhaFuncao().objeto.meuMetodo().No contexto do Jest, o spyOn é tecnicamente um método do objeto global jest. Quando você escreve jest.spyOn(), você está acessando uma funcionalidade que pertence ao objeto jest.
Espero que essa explicação tenha ajudado a organizar essas ideias na sua mente. Continue explorando os testes, pois a prática ajuda a identificar qual abordagem funciona melhor para cada cenário.