Sinon存根传递参数

时间:2017-03-07 20:57:53

标签: javascript node.js sinon

我希望能够只返回存根接收传递给promise的参数,这是可能的:

默认地将Impl:

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

测试:

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

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

docs表示您可以在给定索引处返回arg。

stub.returnsArg(index);

我认为没有全面的回归。

(问题编辑后更新)

您可以存根db.find函数并解决它。我用mocha和chai。

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运行承诺。您也可以使用mocha的完成回调。虽然我经常使用Promise。

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