繁体   English   中英

如何在 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()
        .
        .
        .

如何使用 sinon 存根.addCursorFlag('noCursorTimeout', true)部分? 这是在添加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 ,然后从调用stream方法的位置返回 object。 您需要以类似的方式构建您的集合存根:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM