我有以下代码要进行单元测试:
.addCursorFlag('noCursorTimeout', true)
我该如何存根
addCursorFlag
部分使用sinon?在添加 collectionStub.find = sinon.stub().returns({
stream: () => new mocks.stream.ReadableMock(false, null, 'mongo error')
});
jobRunner.on('error', (updatedJob) => {
expect(updatedJob).to.deep.equal({
...job,
status: 'error',
error: 'mongo error',
});
done();
});
jobRunner.run();
});
之前,这是有效的单元测试:
{{1}}
答案 0 :(得分:1)
这有点棘手,但是如果您观察到collection.find
之后的方法链接,则会调用addCursorFlag
,然后从调用stream
方法的位置返回一个对象。您需要以类似的方式构造您的收藏存根:
collectionStub.find = sinon.stub().returns({
// addCursorFlag is a function that returns an object
addCursorFlag: () => ({
// stream is a method in the returned object
stream: () => new mocks.stream.ReadableMock(false, null, 'mongo error')
)}
});