Nos exemplos abaixo, substitua valorRetornadoPelaAPI pelo valor o qual você deseja que a API retorne ao realizar o fetch.
⚠️ Dessa forma não será possível utilizar umexpectpara verificar por exemplo se a funçãofetchfoi chamada durante o seu teste.
global.fetch = async () => ({
json: async () => (valorRetornadoPelaAPI)
});Dessa forma será possível utilizar um expect(global.fetch).toHaveBeenCalled().
global.fetch = jest.fn(async () => ({
json: async () => (valorRetornadoPelaAPI)
}));Com uma forma mais simplificada utilizando mockResolvedValue
global.fetch = jest.fn().mockResolvedValue({
json: async () => (valorRetornadoPelaAPI)
});Usando o jest.spyOn podemos fazer tudo o que vimos acima e ainda resetar um mock, retornando o comportamente original da função fetch.
jest.spyOn(global, 'fetch').mockResolvedValue({
json: async () => (valorRetornadoPelaAPI)
})Normalmente quando estamos realizando um mock, queremos fazer com que ele seja executado em todos os testes de um describe, para isso podemos utilizar a função beforeEach.
describe('Testes que precisam de mock', () => {
beforeEach(() => {
jest.spyOn(global, 'fetch').mockResolvedValue({
json: async () => (valorRetornadoPelaAPI),
});
});
test('Este teste já possui o mock', async () => {
// ...
});
test('Este teste também já possui o mock, async' () => {
// ...
});
});