1
resposta

[Dúvida] Quando usar a função/método spyOn do Jest?

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?

1 resposta

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:

  • Verificar chamadas: Quando você quer apenas ter certeza de que uma função específica foi executada (como o request do SuperTest no exemplo da aula).
  • Manter o comportamento original: Por padrão, o 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.
  • Restaurar o estado original: Ele permite que, após o teste, você use o comando 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.

  • Função: É um bloco de código autônomo que realiza uma tarefa. Ela pode ser chamada diretamente pelo nome em qualquer parte do código onde esteja visível. Exemplo: minhaFuncao().
  • Método: É uma função que pertence a um objeto ou a uma classe. Ele representa uma ação que aquele objeto pode realizar. Para chamá-lo, você precisa referenciar o objeto primeiro. Exemplo: 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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!