[英]Unit testing a promise where the input params are invalid
我正在尝试对诺言[“ 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;
由于该方法没有返回承诺,因此我无法对其进行错误处理测试! 服务是否有更好的方法来处理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:
return deferred.reject(new Error('itemId is a required field'));
返回undefined
。 因此,以另一种方式修复它:
return Promise.reject(new Error('itemId is a required field'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.