Тестирование отклонено обещание в Мокко / Чай
У меня есть класс, который отклоняет обещание:
Sync.prototype.doCall = function(verb, method, data) {
var self = this;
self.client = P.promisifyAll(new Client());
var res = this.queue.then(function() {
return self.client.callAsync(verb, method, data)
.then(function(res) {
return;
})
.catch(function(err) {
// This is what gets called in my test
return P.reject('Boo');
});
});
this.queue = res.delay(this.options.throttle * 1000);
return res;
};
Sync.prototype.sendNote = function(data) {
var self = this;
return self.doCall('POST', '/Invoice', {
Invoice: data
}).then(function(res) {
return data;
});
};
В моем тесте:
return expect(s.sendNote(data)).to.eventually.be.rejectedWith('Boo');
Однако при прохождении теста выдает ошибку в консоль.
Ошибка необработанного отклонения: Boo ...
С ошибками без обещаний я использовал связывание для проверки, чтобы предотвратить выдачу ошибки до тех пор, пока Чай не сможет завершить и проверить:
return expect(s.sendNote.bind(s, data)).to.eventually.be.rejectedWith('Boo');
Однако это не работает с этим и возвращает:
TypeError:[Function] is not a thenable.
Как правильно проверить это?