sinon-as-promise不能正确回归?

时间:2016-11-16 13:29:45

标签: javascript promise bdd sinon

我想知道为什么下面两种方法会返回不同的东西。我期待两者都用字符串值''返回已解决的承诺。

使用sinon模块:

sinon.stub(db, 'query').returns(Promise.resolve('<VALUE>'));
console.log(db.query()); 
// echos: Promise { '<VALUE>' }

然后使用sinon-as-promised模块:

sinon.stub(db, 'query').resolves('<VALUE>');
console.log(db.query());
/* echos: 
    { then: [Function: then],
      catch: [Function],
      finally: [Function] }
*/

我必须阅读文档错误吗?

1 个答案:

答案 0 :(得分:0)

stub.resolves(value)相关的documentation表示:

  

调用时,存根将返回一个“可以”的对象   返回对提供的值的承诺。

您正在将“thenable”对象记录到控制台,而不是此“thenable”对象返回的Promise。您可以通过执行以下操作来记录值:

sinon.stub(db, 'query').resolves('<VALUE>').then(function(value){
    console.log(value); // <VALUE>
});

您也可以通过执行以下操作记录返回的Promise

var promise = sinon.stub(db, 'query').resolves('<VALUE>').then(function({
});

console.log(promise);