gpt4 book ai didi

javascript - 用 Jasmine 测试异步函数的错误处理

转载 作者:行者123 更新时间:2023-11-30 15:06:18 25 4
gpt4 key购买 nike

我有以下异步函数:

async $onInit() {
try {
this.settings = await this.Service.getSettings(this.companyId);
} catch (error) {
this.uiFeedback.showSystemError('There was an error processing the request.', error);
}
}

我正在尝试测试如果异步函数捕获到错误,该函数是否会显示错误。目前唯一成功做到这一点的规范如下:

it('should show error if api call to get availability settings fails', () => {
Company.getSettings = () => {
throw new Error();
};
try {
cmp.$onInit().catch(() => {});
}
catch (error) {
expect(uiFeedback.showSystemError).toHaveBeenCalled();
}

});

所以基本上我需要在我的测试中添加两个额外的 catch block 来让这个测试工作。否则我会收到以下错误:

ERROR: 'Unhandled promise rejection', 'error'

有更好的方法吗?

最佳答案

所以事实证明问题只是 karma 如何处理异步函数的错误。 this.uiFeedback$onInit 函数中未定义。然而,直到我在 Chrome 中运行测试并检查控制台时,karma 才显示 uiFeedback is undefined 错误。每个人在使用 karma jasmine 测试 async 函数时都需要注意的事项。

关于javascript - 用 Jasmine 测试异步函数的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45699330/

25 4 0
文章推荐: objective-c - 如何在 macbook pro(Intel 64 位处理器)上用 C 语言演示内存错位错误
文章推荐: c - 用 C 读/写大文件
文章推荐: c - 通过 xinetd 的简单缓冲区溢出
文章推荐: javascript - 禁用