【问题标题】:Sinon stub pass through argumentsSinon stub 传递参数
【发布时间】:2017-03-07 20:57:53
【问题描述】:

我希望能够只返回一个存根接收到的参数传递给一个承诺,这可能吗:

实施:

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

测试:

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

这个可以吗?

【问题讨论】:

    标签: javascript node.js sinon


    【解决方案1】:

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

    stub.returnsArg(index);
    

    我不认为一揽子返回所有参数。

    (问题编辑后更新)

    您可以存根 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 兑现承诺。你也可以使用 mocha 的 done 回调。虽然我经常只使用 Promise。

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

    【讨论】:

    • 更新问题,我很抱歉。是的,这可行,但我试图返回包装在 Promise.resolve 中的参数
    • 好的。让我删除那个答案,因为它不相关。将发布一个新的。
    • 我实际上更新了现有的。我希望这是有道理的。
    猜你喜欢
    • 2015-08-21
    • 2020-06-12
    • 2019-09-30
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2016-05-22
    • 1970-01-01
    相关资源
    最近更新 更多