我试图理解带有ReduxSaga测试计划的测试,但我有点被动态有效负载所困扰。
这是我的传奇:
function* getCheapCars() {
try {
const response = yield call(fetch, '/api/home')
const cars = yield call([response, response.json])
yield put({ type: types.FETCH_DATA_SUCCESS, cars })
} catch (error) {
yield put({ type: types.FETCH_DATA_ERROR, error })
}
}
下面是测试:
it('just works!', () => {
return expectSaga(saga)
.take('FETCH_DATA_SUCCESS')
.put({ type: 'FETCH_DATA_SUCCESS', cars })
.dispatch({ type: 'FETCH_DATA_SUCCESS', cars })
.run()
})
我可能是错的(我对Saga完全陌生),但如何从请求中获得动态有效载荷——在本例中,是汽车。汽车代表了多个“帖子”的数组,包括标题、slug、id和许多其他字段。我应该创建一个具有完全相同字段的假对象吗?
我需要一点关于减速器测试的帮助,基本上这里有相同的故事和这个测试通过了,但它不应该。因为我不希望项目的数组是空的,但是数组的长度是4(车)。
it('just works!', async () => {
const { storeState } = await expectSaga(saga)
.withReducer(reducer)
.run()
expect(storeState).toEqual({
loading: false,
error: null,
items: []
})
})
有什么我不明白的吗?事先谢谢。