Я новичок в реакции. Пожалуйста, помогите мне с модульным тестом для Redx-Saga / Effecs. Допустим, у меня есть эффекты избыточности для отдельной функции
export function* appEffects() {
yield all([
takeEvery(Types.CONFIGURE_LANGUAGE, configureLanguage),
// other effects for this feature (removed to simplify example)
]);
}
function* configureLanguage(action: Actions.ConfigureLanguageAction) {
const currentLanguage: string = 'en'; // simplified example
yield put({ type: Types.SET_CURRENT_LANGUAGE, payload: currentLanguage });
}
Я могу проверить configureLanguage
напрямую с помощью следующего кода
import { runSaga } from 'redux-saga';
async function recordSaga(saga: any, initialAction: any) {
const dispatched: any = [];
await runSaga(
{ dispatch: (action: any) => dispatched.push(action) },
saga,
initialAction
).toPromise;
return dispatched;
}
it('should configure language', async () => {
const action = appActions.service.configureLanguage('en');
const dispatched = await recordSaga(
configureLanguage
action
);
expect(dispatched).toEqual([{ type: Types.SET_CURRENT_LANGUAGE, payload: 'en' }]);
});
Как я могу проверить configureLanguage
из appEffects
? Если я попытаюсь
const dispatched = await recordSaga(
appEffects
action
);
, я получу dispatched === []