【问题标题】:Testing if a promise throws/rejected with Mocha + Chai as promised doesn't seem to be working测试是否按照承诺使用 Mocha + Chai 抛出/拒绝了承诺似乎不起作用
【发布时间】:2019-11-26 14:49:18
【问题描述】:

我有一个依赖于另一个异步函数的异步函数,我正在测试它是否会在 url 错误时抛出错误,它确实会抛出错误并且它在控制台上。

但是测试一直失败,但是我编写了语法。我完全不知道应该如何写这篇文章,而且我在这个废话上浪费了太多时间......

expect(GetSecret('', 'test-secret')).to.eventually.throw(
      'TypeError: Only absolute URLs are supported',
    ); 

expect(GetSecret('', 'test-secret')).to.eventually.throw;
expect(GetSecret('', 'test-secret')).to.eventually.be.rejected;

这些是我尝试过的几种方法,但每次都得到相同的结果。 我也尝试过await GetSecret(''... 与这些的所有可能组合,但结果相同。

我的版本:

    "@types/mocha": "^5.2.7",
    "@types/chai-as-promised": "^7.1.2",
    "chai": "2.1.2",
    "chai-as-promised": "^7.1.1", 

然后导入:

import { expect } from 'chai';

【问题讨论】:

  • 你设置 chai 使用插件了吗? chai.use(require('chai-as-promised'));
  • 你能用GetSecret函数的代码编辑你的问题吗?
  • @ChrisG 我确实没有导入那个,我知道我是如何浏览那段文档的,如果您将其作为答案发布,我会将其标记为正确。

标签: javascript typescript mocha.js chai chai-as-promised


【解决方案1】:

使用插件需要你告诉 chai 到 use() 它,你可以这样做:

const chai = require('chai');
chai.use(require('chai-as-promised'));

现在您可以使用附加功能,在本例中为eventually:

const expect = chai.expect;

return expect(returnsAPromise()).to.eventually.equal(someValue);

【讨论】:

  • 谢谢,除了 mocha 无法正常通过测试外,此方法有效,chai-as-promised 需要 return expect(...
  • 啊,我完全忘记了这是我能做的事情,哈哈!
猜你喜欢
  • 2015-06-04
  • 2015-10-28
  • 2017-07-16
  • 2016-06-19
  • 2018-03-17
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
相关资源
最近更新 更多