我正在使用redux-saga并使用expect进行测试。基于(惊人的)React Boilerplate中给出的示例,测试从Store(使用选择器)获取所需数据的传奇是没有问题的。
然而,我的一些传奇依赖于派遣行动中包含的数据:
export function* startSaga() {
while (true) {
const startAction = yield take(START);
const id = startAction.id || false;
...
为了测试这个,我正在导入传奇,然后调用它:
import { startSaga } from '../sagas.js';
startGenerator = startSaga();
...
由于这个原因,没有任何操作可以将saga关闭,因此id
的值总是错误的。
我的动作和减速器是单独测试的:当以这样的独立方式测试传奇时,是否有一种简单的方法可以使其发挥作用?
答案 0 :(得分:3)
运行saga生成器函数时,您可以控制每个yield
传回的数据:
import { startSaga } from '../sagas.js';
let startGenerator = startSaga();
let takeEffect = startGenerator.next()
expect(takeEffect).toEqual(take(START));
startGenerator.next({id: 234});