如何在Mocha测试中存根mongodb的addCursorFlag?

时间:2019-11-07 18:22:40

标签: node.js mongodb mocha sinon sinon-chai

我有以下代码要进行单元测试:

.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}}

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