繁体   English   中英

在输入参数无效的情况下对诺言进行单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM