我是JavaScript中的Promises的新手,虽然它似乎在某种程度上对我有用,但我无法测试'拒绝'值。
我正在通过一个错误,并希望确保它是一个错误,更重要的是,错误代码符合我的预期。
return new Promise(function(resolve, reject){
tableService.deleteEntity(config.azureTable.tableName,
visitor.azureEntity(), function (error, response) {
// If successful, go on.
if (!error) {
resolve(response);
}
// If unsuccessful, log error.
else {
/* If we know it's a resourceNotFound
that's causing the error, return that. */
if (error.code === 'ResourceNotFound') {
reject(new Error('Record not found'));
}
// For unexpected errros.
else {
reject(new Error('Table service error (delete): ' + error));
}
}
});
});
在摩卡的测试 - 使用chai和chai-as-promise。其他一切都在运作(我有24次通过测试) - 但是这个让我卡住了!
it('return an error when the lookup fails', function (done) {
storage.delete(globalUUID).then(function(sucess) {
done(sucess);
}, function(error) {
expect(error).to.be.an(Error);
done();
});
});
非常感谢任何帮助。
答案 0 :(得分:0)
您没有在任何地方使用chai-as-promised
。如果您的第一个代码示例是storage.delete
方法的主体,那么您的测试应如下所示:
it('return an error when the lookup fails', function() {
expect(storage.delete(globalUUID)).to.be.rejectedWith(Error);
});