首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试Redux Saga,使用触发它的操作的值

测试Redux Saga,使用触发它的操作的值
EN

Stack Overflow用户
提问于 2016-09-08 21:50:26
回答 1查看 662关注 0票数 2

我有一个非常好用的saga,我调用一个action并包含一些数据,saga被触发,它从action中提取值,执行API调用,并以几个yield结束。

我现在正在尝试测试这个传奇和命中问题,我已经写了一个简单的传奇和测试,试图缩小问题的范围。

传奇:

代码语言:javascript
运行
复制
function* exampleSaga() {
  while(true) {
    yield take('EXAMPLE_SAGA');
    console.log('what is the value inside example');
    const { value } = yield take('ANOTHER_ACTION')
    console.log('value', value);
    yield take('THIRD_TAKE')
  }
}

export { exampleSaga }

测试:

代码语言:javascript
运行
复制
describe('Saga::Example ', function() {
  it('should take EXAMPLE_SAGA ', () => {
    const saga = exampleSaga()

    expect(saga.next().value).to.deep.equal(take('EXAMPLE_SAGA'))
    expect(saga.next({
      type: 'ANOTHER_ACTION',
      value: 'amazing'
    }).value).to.deep.equal(take('ANOTHER_ACTION'))
    expect(saga.next().value).to.deep.equal(take('THIRD_TAKE'))
  })
})

我期望的是,因为我调用next()并传递一个对象(一个模拟的redux操作),所以我应该能够从saga中的该操作中提取值。

我得到的是:

代码语言:javascript
运行
复制
TypeError: Cannot read property 'value' of undefined

令人沮丧的是,在我的应用程序中,使用此语法从操作中获取值的传奇故事:

代码语言:javascript
运行
复制
const { value1, value2 } = yield take('ACTION_NAME')

只有当我尝试测试这个传奇故事时,问题才会出现。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-08 22:34:52

它的工作方式与预期一致。在您的代码中,您断言saga正在等待一个操作(而不是推送它)。因此,您必须将值对象传递给下一次迭代:

代码语言:javascript
运行
复制
// expecting that saga waits for EXAMPLE_SAGA action
expect(saga.next().value).to.deep.equal(take('EXAMPLE_SAGA'))

// pushing EXAMPLE_SAGA action and expecting that saga waits for ANOTHER_ACTION
expect(saga.next().value).to.deep.equal(take('ANOTHER_ACTION'))

// pushing ANOTHER_ACTION and expecting that saga waits for THIRD_TAKE action
expect(saga.next({
  type: 'ANOTHER_ACTION',
  value: 'amazing'
}).value).to.deep.equal(take('THIRD_TAKE'))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39392758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档