2

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

但是,我的一些 sagas 依赖于已调度操作中包含的数据:

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总是为假的。

我的动作和减速器是分开测试的:当像这样以独立的方式测试 sagas 时,有没有一种简单的方法可以让它工作?

4

1 回答 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});
于 2016-08-25T15:56:13.197 回答