【问题标题】:How to use sinon unit test redux saga spawn function如何使用 sinon 单元测试 redux saga spawn 功能
【发布时间】:2021-05-04 23:10:53
【问题描述】:

我在我的 redux-saga 调用中遇到了 spawn 调用单元测试,需要额外的帮助,非常感谢!

我的传奇

export function* sampleTest() {
    try {
        yield put(someData1);
        yield spawn(someData2);
        yield spawn(someData3);
    } catch (error) {
        console.log('error', error);
    }
}
}

someData2 code is an API call this one returns an array with one object.

我的测试

describe('For my spawn test', () => {
    it('Initialize saga', () => {
        const someData2Spy = sinon.spy();
        const gen = sampleTest({});
        expect(gen.next().value).to.deep.equal(put(someData1));
      expect(gen.next(someData2Spy).value).to.be.deep.equal(spawn(someData2));  <--- Does not work
        // expect(gen.next()).to.be.deep.equal(spawn(someData3));  <--- Does not work
        // expect(gen.next().done).to.equal(true);
    });
});

我会得到一个错误

Attempted to wrap undefined property undefined as function

Tried expect(gen.next()).to.be.deep.equal(spawn(someData2)); get this error: 
expected { Object (@@redux-saga/IO, combinator, ...) } to equal { Object (@@redux-saga/IO, combinator, ...) }

我试过这个one 对我不起作用。 谢谢

【问题讨论】:

  • 您介意说明someData2someData3 是什么类型的函数吗?
  • 另外,可能会开始帮助解决问题,但是当您expect(gen.next(someData2Spy).value).to.be.deep.equal(spawn(someData2)) 时,也许您可​​以更改为expect(gen.next().value).to.be.equal(spawn(someData2)) 看看它是否有效?
  • someData2 和 someData2 是一些 API 调用。我试过这个expect(gen.next().value).to.be.equal(spawn(someData2))有这个错误expected { Object (@@redux-saga/IO, combinator, ...) } to equal { Object (@@redux-saga/IO, combinator, ...) }
  • 更新了我的问题,非常感谢
  • 嗯,很奇怪。 { Object (@@redux-saga/IO, combinator, ...) } 的块在两者中是否完全相同?

标签: javascript unit-testing react-redux sinon redux-saga


【解决方案1】:

现在就为我找出这项工作:

describe('For my spawn test', () => {
  it('Initialize saga', () => {
    expect(gen.next({}).value).to.deep.equal(put(someData1));
    expect(gen.next({}).value).to.be.deep.equal(spawn(someData2));
    expect(gen.next({}).value).to.be.deep.equal(spawn(someData3));
 });
});

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2018-06-10
    • 2017-03-05
    相关资源
    最近更新 更多