【发布时间】:2015-02-19 01:59:43
【问题描述】:
我正在尝试对一个承诺进行单元测试 ["q": "^1.1.2"];以下代码在未引发错误时有效。我需要验证正确处理错误的预期行为。
代码:
Service.prototype.getItem = function (itemId) {
var deferred = Promise.defer();
// Ensure
if (typeof itemId !== 'string' || itemId === '') {
return deferred.reject(new Error('itemId is a required field'));
}
....
// do some logic at return item
return deferred.resolve(item);
....
return deferred.promise;
由于该方法没有返回承诺,我无法测试它的错误处理!服务是否有更好的方法来处理承诺,但如果其中一个参数错误则返回错误。
单元测试:
it('Call Service - should throw an error', function (done) {
Service.getItem('')
.then(function (item) {})
.catch(function (err) {
expect(err).not.to.be.empty();
done()
}).done();
});
【问题讨论】:
-
几乎每个 promise 库都弃用了 deferreds - 只是说您可能需要考虑 promise 构造函数。
-
你使用什么库进行单元测试?
-
已更新,“q”:“^1.1.2”。单元测试 chai、mocha。
-
不是 promise 库 - 单元测试库
标签: javascript node.js unit-testing promise