如何测试使用派遣行动数据的Saga

时间:2016-08-25 15:15:27

标签: javascript redux redux-saga react-boilerplate

我正在使用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的值总是错误的。

我的动作和减速器是单独测试的:当以这样的独立方式测试传奇时,是否有一种简单的方法可以使其发挥作用?

1 个答案:

答案 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});