Article image
Valdir Alves
Valdir Alves31/03/2023 05:07
Compartilhe

Diferença entre Fn, Mock e SpyOn

  • #TypeScript

Os métodos jest.fn(), jest.mock() e jest.spyOn() são todos recursos oferecidos pelo Jest, um framework de testes para JavaScript, mas têm finalidades diferentes.

jest.fn()

É usado para criar uma função simulada (mock function) que pode ser passada como argumento para outras funções durante os testes. 

A mock function é capaz de registrar informações sobre quantas vezes foi chamada, com quais argumentos e o valor que retornou.

Ela é útil para simular comportamentos específicos de funções que podem ser difíceis ou impossíveis de testar em um ambiente real. 

Por exemplo, podemos usar jest.fn() para simular uma chamada de API e verificar se a função que a consome lida corretamente com a resposta.

jest.mock()

É usado para substituir uma dependência de um módulo por uma mock function. 

Isso é útil quando queremos testar um módulo que depende de outros módulos externos, como uma API ou banco de dados, e não queremos que os testes sejam afetados por alterações nessas dependências. 

A mock function criada por jest.mock() pode ser configurada para retornar valores específicos ou gerar erros quando é chamada.

jest.spyOn()

É usado para criar uma mock function que espiona (spy) uma função existente. 

Isso significa que a função original é executada normalmente, mas podemos verificar se ela foi chamada corretamente ou quantas vezes foi chamada, e também podemos modificar seu comportamento para atender às necessidades do teste.

jest.spyOn() é útil quando queremos testar uma função que já existe em um módulo, mas precisamos de mais controle sobre como ela é chamada ou seu comportamento.

Em conclusão, podemos afirmar que o método jest.fn() é útil para criar uma mock function genérica, enquanto o jest.mock() é útil para substituir dependências externas de módulos por mock functions.

Já o jest.spyOn() é usado para espionar e modificar o comportamento de funções existentes.

Vamos ver na prática?

Acesse o Catálogo DIO e entre na Formação Typescript fullstack Developer.

Vamos aprender juntos...

Compartilhe
Comentários (0)