我有以下的传奇,监听不同类型的action
:
export default function *() {
yield takeEvery('FOO', listener)
yield takeEvery('BAR', listener2)
yield takeEvery('HELLO_WORLD', listener3)
}
本质上,此传奇在收到某些动作时具有多种行为。
如果将
FOO
作为操作类型,它将调用listener
函数,依此类推。目前,我很难仅在这3行中就开玩笑地撰写测试报道。
我以为可以写些东西,但是运气不好:
describe('for action type that has "FOO"', () => {
const actionPayload = {
type: 'FOO',
}
const gen = saga({ type: actionPayload })
it('listens to "FOO" and yield action', () => {
const actual = gen.next()
const expected = takeEvery('FOO', listener)
expect(actual.value).toEqual(expected)
})
})
我想念什么?
最佳答案
takeEvery
实际上是一个fork
。因此,您应该像这样进行测试:
describe('for action type that has "SMS_API_REQUEST"', () => {
const actionPayload = {
type: 'FOO',
}
const gen = saga({ type: actionPayload })
it('listens to "FOO" and yield action', () => {
const actual = gen.next()
const expected = fork(takeEvery, 'FOO', listener)
expect(actual.value).toEqual(expected)
})
})