0
我想弄清楚它是如何測試我的傳奇,它包含一個普通的ol'javascript函數。Redux Saga:在我的英雄傳奇中測試普通的javascript函數,使用了REDX-SAIG-test-plan和jest
這裏是我的傳奇:
export function* watchGetActivities() {
yield takeLatest(actionTypes.GET_ACTIVITIES, getActivitiesSaga);
}
function* getActivitiesSaga() {
try {
const activities = yield call(api.getActivities);
const timezone= yield call(getTimezone);
const activityWithTimezone=attachTimeZoneToActivities(activities.data,timezone.data);
yield put(getActivitesSuccess(activityWithTimezone));
} catch (e) {
yield put(getActivitiesFailure());
yield put(showModal(modalTypes.ERROR, 'Could not retrieve activities.'));
}
}
第三常量調用(這基本上是通過從討論的API的活動循環,並將其組合)的功能:
export const attachTimeZoneToActivities= (activities,timezones)=>{
activities.forEach(function (activity) {
activity['timezone']=getActivityTimeZone(timezones,activity.start_epoch_ms)
})
return activities;
}
最後,我測試使用REDX-SAGA-測試計劃:
it('fetches activities from the activities API',() => {
const fakeActivity = { data: {foo: 'bar' } };
const fakeTimezone= { data: {timezone: 'denver' } };
const fakeAttachTimeZoneToActivities={foo:'bar',timezone: 'denver'};
return expectSaga(watchGetActivities, api)
.provide([
[call(api.getActivities), fakeActivity],
[call(getTimezone),fakeTimezone],
[matchers.call.fn(attachTimeZoneToActivities), fakeAttachTimeZoneToActivities]
[matchers.call.fn(getActivityTimeZone), 'denver']
])
.put(activity.getActivitesSuccess({ foo: 'bar',timezone:'denver'}))
.dispatch(activity.getActivities())
.silentRun()
});
無論出於何種原因,傳奇imme如果沒有api通話,我可以在通過時區廢話之前加以通過。任何人有任何提示?先進的謝謝!