我想知道为什么下面两种方法会返回不同的东西。我期待两者都用字符串值''返回已解决的承诺。
使用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] }
*/
我必须阅读文档错误吗?
答案 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);