如何使用 sinon 单元测试 redux saga spawn 功能

问题描述

我的 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,...) }

我试过这个 strcat() 对我不起作用。 谢谢

解决方法

现在为我找出这项工作:

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

感谢您的帮助!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...