【问题标题】:test promise reject case using mocha使用 mocha 测试承诺拒绝案例
【发布时间】:2017-07-16 03:01:15
【问题描述】:

我想为promise reject case做测试用例。

这是我的代码

1) 文件:TemplateFinder.js

**I want to make test for this method on promise reject using *mocha* how can i achieve this?**

var findTemplate = function (template) {

    return templateFinder.find(templateName)
        .then( (result) => {
            return result.id;
        });
};

2) 查询.js

var find = function (template) {
    return knex.where({
        internal_name: template,
    })
    .select('external_id')
    .from('mailing_external_template')
    .then(function (data) {
        if (0 === data.length) {
            return Promise.reject(RangeError('no result for id'));
        } else {
            return data[0].external_id;
        }
    });
};

3) app.js

Main file to run

function findTemplate()
{
    templateFinder.findGoodTemplate('good-mail-template');
}

initiateProcess()
.then(function (fromResolve) {
    return findTemplate();
})
.catch(function (e) {

});

我的尝试:

it('should throw error if template not found', function () {

    var findTemplateIdStub = sinon.stub(templateFinder, 'find');

    var error = 'my expected error message returned by my function';
    findTemplateIdStub.returns(Promise.reject(error));

    return templateFinder.findTemplate(templateName)
      .catch(function(err) {
        assert.equal(err, error);
      });
  });

我尝试的问题是 findTemplate 没有捕获,所以我怎么能从我的测试用例中断言变量,而不是原始的。 (Catch 不在代码中,但仍然是我的测试通过。)请帮我为 findTemplate 拒绝案例制作测试案例。

【问题讨论】:

    标签: javascript node.js promise mocha.js sinon


    【解决方案1】:

    findTemplateIdStub应该返回一个承诺吗?

    如果是这种情况,您可以包含 sinon-as-promised 并且存根应该是:

    findTemplateIdStub.rejects('some error') 用于坏情况

    findTemplateIdStub.resolves(1234) 好案例

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2018-02-25
      • 2015-06-04
      • 2017-07-12
      • 2018-03-17
      • 1970-01-01
      相关资源
      最近更新 更多