Skip to content

Instantly share code, notes, and snippets.

@IsTheJack
Created February 8, 2018 17:24
Show Gist options
  • Save IsTheJack/445134f75bb48d571d56c9c5aedbfdb7 to your computer and use it in GitHub Desktop.
Save IsTheJack/445134f75bb48d571d56c9c5aedbfdb7 to your computer and use it in GitHub Desktop.
// actions.test.js
// Importando o arquivo onde terá a função acoplada à função testada
import * as punkapi from './path/to/file';
// Importando o aquivo onde terá a função testada
import * as actions from './actions';
// Arquivo com as constantes dos types usados nas actions
import * as types from './types';
// ...
it('must to return success action on success', () => {
jest
.spyOn(punkapi, 'getBeers')
.mockImplementation(() => Promise.resolve({ data: { mock: 'mock' } }));
const dispatchMock = jest.fn()
// A função que recebe o dispatch retorna uma promise
// (vide implementação da função fetchBeers)
const promise = actions.fetchBeers()(dispatchMock);
// Aproveitando a promise retornada para fazer a verificação
// assíncrona das chamadas do dispatch
return promise.then(() => {
// Pegando o argumento da PRIMEIRA chamada do dispatch
const argOfFirstCall = dispatchMock.mock.calls[0][0];
// Pegando o argumento da SEGUNDA chamada do dispatch
const argOfSecondCall = dispatchMock.mock.calls[1][0];
// O argumento da PRIMEIRA chamada deve ser igual ao
// objeto passado pro 'toEqual'
expect(argOfFirstCall).toEqual({ type: types.FETCH_BEERS });
// O argumento da SEGUNDA chamada deve ser igual ao
// objeto passado pro 'toEqual'
expect(argOfSecondCall).toEqual({
type: types.FETCH_BEERS_SUCCESS,
payload: { mock: 'mock' },
});
});
});
// ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment