【发布时间】: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 对我不起作用。 谢谢
【问题讨论】:
-
您介意说明
someData2和someData3是什么类型的函数吗? -
另外,可能会开始帮助解决问题,但是当您
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