如何在 mocha 测试中存根 mongodb 的 addCursorFlag?
How can I stub mongodb's addCursorFlag in mocha test?
我有这段代码要进行单元测试:
collection.find({
result: { $exists: false }
}, {
timeout: false,
maxTimeMS: 1800000,
})
.addCursorFlag('noCursorTimeout', true)
.stream()
.
.
.
我怎样才能存根
.addCursorFlag('noCursorTimeout', true)
部分使用 sinon?这是在添加 addCursorFlag
:
之前有效的单元测试
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();
});
这有点棘手,但如果您观察 collection.find
之后的方法链接,您会调用 addCursorFlag
,然后 returns 从您调用的地方调用 object stream
方法。您需要以类似的方式构建 collection 存根:
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')
)}
});
我有这段代码要进行单元测试:
collection.find({
result: { $exists: false }
}, {
timeout: false,
maxTimeMS: 1800000,
})
.addCursorFlag('noCursorTimeout', true)
.stream()
.
.
.
我怎样才能存根
.addCursorFlag('noCursorTimeout', true)
部分使用 sinon?这是在添加 addCursorFlag
:
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();
});
这有点棘手,但如果您观察 collection.find
之后的方法链接,您会调用 addCursorFlag
,然后 returns 从您调用的地方调用 object stream
方法。您需要以类似的方式构建 collection 存根:
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')
)}
});