对输入参数无效的承诺进行单元测试
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;
由于该方法没有 return 承诺,我无法测试它的错误处理!服务是否有更好的方法来处理承诺,但如果其中一个参数错误,则 return 出错。
单元测试:
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();
});
您的代码确实没有return Promise:
return deferred.reject(new Error('itemId is a required field'));
它return undefined
。所以,接下来修复它:
return Promise.reject(new Error('itemId is a required field'));
我正在尝试对承诺进行单元测试 ["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;
由于该方法没有 return 承诺,我无法测试它的错误处理!服务是否有更好的方法来处理承诺,但如果其中一个参数错误,则 return 出错。
单元测试:
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();
});
您的代码确实没有return Promise:
return deferred.reject(new Error('itemId is a required field'));
它return undefined
。所以,接下来修复它:
return Promise.reject(new Error('itemId is a required field'));