1
resposta

[Dúvida] Não entendi a funcionalidade do SPY

Entendi como implementar, mas não entendi qual o beneficio ao implementar essa funcionalidade

1 resposta

Olá, Marllon! Tudo bem?

A funcionalidade do SPY é muito útil quando queremos verificar se uma função foi chamada, quantas vezes ela foi chamada, e com quais argumentos. Isso é especialmente útil em testes unitários e de integração, onde queremos isolar as funções e ter certeza de que elas estão funcionando como esperado.

No exemplo dado na aula, o instrutor criou um SPY para o método 'request' do objeto 'requisição'. O que isso faz é criar um "espião" que vai acompanhar todas às vezes que o método 'request' for chamado durante o teste.

Depois de fazer a requisição, o instrutor usa o método 'toHaveBeenCalled' do espião para verificar se o método 'request' foi realmente chamado. Isso é útil porque, se o método 'request' não for chamado, sabemos que há algo errado com o nosso código.

Além disso, o Jest oferece uma série de outros métodos que você pode usar com o espião, como 'toHaveBeenCalledTimes' (para verificar quantas vezes a função foi chamada) e 'toHaveBeenCalledWith' (para verificar com quais argumentos a função foi chamada).

Aqui está um exemplo prático:

// Suponha que temos a seguinte função em nosso código
function soma(a, b) {
  return a + b;
}

// Em nosso teste, podemos criar um espião para essa função
const spy = jest.spyOn(global, 'soma');

// Agora, quando chamamos a função soma, o espião vai acompanhar
soma(1, 2);

// Podemos verificar se a função foi chamada
expect(spy).toHaveBeenCalled();

// Podemos verificar quantas vezes a função foi chamada
expect(spy).toHaveBeenCalledTimes(1);

// E podemos verificar com quais argumentos a função foi chamada
expect(spy).toHaveBeenCalledWith(1, 2);

Lembre-se, a ideia principal é que o SPY permite que você tenha um controle mais granular sobre suas funções durante os testes, o que pode ajudar a identificar problemas e garantir que seu código esteja funcionando corretamente.

Espero que isso esclareça a funcionalidade para você.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.