【发布时间】:2018-10-02 21:03:38
【问题描述】:
我有一个运行 2000 毫秒的异步函数,然后它会抛出异常。我正在尝试用 Mocha / chai 准确地测试这种行为,但显然我做错了。
这就是我尝试过的:
第一:
expect(publisher.dispatchMessage<ExampleResponseMessage>(message, {}, 2 * 1000)).to.eventually.throw();
这将测试标记为通过(52 毫秒运行时间),但 2 秒后抛出异常。所以显然它根本没有等待该功能的承诺。
第二:
expect(async () => {
await publisher.dispatchMessage<ExampleResponseMessage>(message, {}, 2 * 1000);
}).to.throw();
测试失败: 应该在预定义的超时后拒绝预定的消息: AssertionError:预期 [Function] 会抛出错误 在 Context.mocha_1.it (test\integration\rpc-communication.spec.ts:75:16) 在
预期的行为是测试通过,因为 2000 毫秒后抛出异常,这是在给定的测试用例超时 4000 毫秒内。
其他信息:
这会奏效。承诺因错误而被拒绝(我也可以将其更改为使用字符串拒绝)。这应该证明 dispatchMessage() 正在按预期工作。测试用例耗时 2002ms,然后通过。
try {
await publisher.dispatchMessage<ExampleResponseMessage>(message, {}, 2 * 1000);
} catch (err) {
expect(err).to.be.an('Error');
}
问题:
如何正确测试异步函数是否引发异常?
【问题讨论】:
标签: typescript mocha.js chai chai-as-promised