javascript - Sinon stub 传递参数

标签 javascript node.js sinon

我希望能够返回 stub 接收到的传递给 promise 的参数,这可能吗:

实现:

function(arg) {
   return db.find(arg)
     .then(result => {
        return fnIWantToStub(result);
      })
      .then(nextResult => {
         return done()
      });

测试:

var stub = sinon.stub(fnIWantToStub);
stub.returns(PassedThruArgsThatReturnsAPromise);

这可以做到吗?

最佳答案

docs声明您可以在给定索引处返回一个 arg。

stub.returnsArg(index);

我认为没有一揽子返回所有参数的方法。

(问题编辑后更新)

您可以 stub db.find 函数并解决它。我用摩卡和柴。

const dbStub = sinon.stub(db, 'find');
const expected = {..};
dbStub.returns(Promise.resolve(someDataFixture));
const result = functionUnderTest(args);
// using chaiAsPromised
return expect(result).to.eventually.equal(expected);

请注意,您必须返回才能让 Mocha 履行 promise 。您还可以使用 mocha 的完成回调。尽管我经常只使用 Promise。

结账 http://staxmanade.com/2015/11/testing-asyncronous-code-with-mochajs-and-es7-async-await/

关于javascript - Sinon stub 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658194/

相关文章:

node.js - 无法在 node.js ejs 模板中查找 View ,而模板只是刚刚重命名

node.js - 当接收 block 文件时,如何使用 gridfsbucket 将大文件通过管道传输到 mongodb 中?

node.js - 使用 Jest 和 Sinon 测试具有属性的函数

javascript - 在这个 switch 语句中执行 `return ' ' ;` or ` return null;` 是否更有意义?

javascript - AngularJS 错误 : 'argument ' FirstCtrl' is not a function, 未定义'

javascript - 在 IE 控制台中禁用 Javascript 调试

javascript - 使用 Javascript 更改背景颜色无法正常工作

JavaScript - "Combining"两个相似的对象数组

javascript - 如何在 Promise 中实现回调以使用 Mocha 和 Sinon 进行测试?

javascript - 内部对象函数的 SinonJS calledOnce 或 callCount 问题