我正在尝试了解redux-saga-test-plan的测试,但是我对动态有效载荷有些困惑。
这是我的传奇:
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()
})
我可能错了(我对传奇完全陌生),但是如何从请求中获取动态有效载荷-在这种情况下,它是汽车。汽车代表了多个带有标题,子弹,id和许多其他字段的“帖子”。我应该只创建一个字段完全相同的假对象吗?
在使用Reducer进行测试时,我需要一点帮助,基本上这是相同的传奇,并且此测试通过,但实际上不是。因为我不希望有空的项目数组,而是长度为4(汽车)的数组。
it('just works!', async () => {
const { storeState } = await expectSaga(saga)
.withReducer(reducer)
.run()
expect(storeState).toEqual({
loading: false,
error: null,
items: []
})
})
我有没有得到的东西吗?预先感谢。
答案 0 :(得分:0)
我在使用redux-saga-test-plan进行saga测试时了解到的是,我们应该模拟api调用并选择调用。
模拟是通过Provide方法完成的,因此不会调用真正的api。
const mockResponse = []; // your api response
it('getCheapCars test', () => expectSaga(getCheapCars)
.provide([
[call(fetch, '/api/home'), mockResponse],
])
.put({ type: types.FETCH_DATA_SUCCESS, cars: mockResponse })
.run())