Это более или менее шаблон, которому вы должны следовать:
// import the saga, types, actions, and api
import { put, call } from 'redux-saga/effects';
import * as saga from './YOUR_SAGA_DIRECTORY';
import * as api from './YOUR_API_DIRECTORY';
import * as actions from './YOUR_ACTIONS_DIRECTORY';
import * as types from './YOUR_TYPES_DIRECTORY';
describe('TEST SAGA WITH JEST', () => {
// provide mock params for your action
const param = 'test';
const anotherParam = 'anotherTest';
test('SAGA SUCCESS', () => {
// execute the saga with the action and the mocks
const generator = saga.yourSaga(actions.yourAction(param, anotherParam));
expect(generator.next().value).toEqual(call(api.yourApi, param, anotherParam));
// assert that it was executed successfully
expect(generator.next().value).toEqual(put(actions.successAction()));
});
test('SAGA FAILURE', () => {
const generator = saga.yourSaga(actions.yourAction(param, anotherParam));
expect(generator.next().value).toEqual(call(api.yourApi, param, anotherParam));
// assert that it executed the failureAction after error was thrown
expect(generator.throw('error').value).toEqual(put(actions.failureAction());
});
});
Обратите внимание, что это модульное тестирование, где вы проверяете, что сага выполнена должным образом в соответствии с порядком действий и цепочки эффектов внутриЭто.Более подробную информацию можно получить на tedux-saga-testing .