2016-11-16 10 views
0

Мне интересно, почему два метода ниже возвращают разные вещи. Я ожидал, что оба они вернут решительное обещание со строковым значением ''.sinon-as-обещанный не возвращается правильно?

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

documentation по отношению к stub.resolves(value) гласит:

При вызове окурок будет возвращать «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);