首页 文章

如何测试使用来自调度动作的数据的Saga

提问于
浏览
2

我正在使用redux-saga并使用expect进行测试 . 基于(惊人的)React Boilerplate中给出的示例,测试从存储(使用选择器)获取所需数据的传奇是没有问题的 .

但是,我的一些传奇依赖于派遣行动中包含的数据:

export function* startSaga() {
  while (true) {
    const startAction = yield take(START);
    const id = startAction.id || false;
    ...

为了测试这个,我导入了saga,然后调用它:

import { startSaga } from '../sagas.js';
startGenerator = startSaga();
...

由于这个原因,没有任何动作将saga关闭,因此 id 的值总是假的 .

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

1 回答

  • 3

    运行saga生成器函数时,您可以控制每次 yield 传回的数据:

    import { startSaga } from '../sagas.js';
    let startGenerator = startSaga();
    
    let takeEffect = startGenerator.next()
    expect(takeEffect).toEqual(take(START));
    startGenerator.next({id: 234});
    

相关问题