gpt4 book ai didi

javascript - 用 jasmine 单元测试 window.onerror

转载 作者:行者123 更新时间:2023-11-29 10:50:56 25 4
gpt4 key购买 nike

我是 javascript 的新手,正在尝试使用 jasmine 对一些错误处理代码进行单元测试。

特别是,我正在尝试编写一些测试来验证替换 window.onerror() 的自定义代码(称为 windowHandleError)是否被调用,并且正在执行我们想要的操作。

我尝试了一些类似的方法:

       it("testing window.onerror", function() {
spyOn(globalerror, 'windowHandleError');
globalerror.install();

var someFunction = function() {
undefinedFunction();
};
expect(function() {someFunction();}).toThrow();
expect(globalerror.windowHandleError).toHaveBeenCalled();
});

但它不会触发 onerror。我看过一些相关的问题,但他们似乎询问特定的浏览器,或者如何/在哪里使用 onerror 而不是如何测试它。
window.onerror not firing in Firefox
Capturing JavaScript error in Selenium
window.onerror does not work
How to trigger script.onerror in Internet Explorer?

根据其中一些人的说法,我认为在调试器中运行规范测试会强制触发 onerror,但不是。有人知道更好的方法吗?

最佳答案

本人最近开发小JavaScript error handler单元测试基于 Buster.JS这与 Jasmine 类似。

The test that exercises the window.onerror看起来像这样:

  "error within the system": function (done) {

setTimeout(function() {
// throw some real-life exception
not_defined.not_defined();
}, 10);

setTimeout(function() {
assert.isTrue($.post.called);
done();
}, 100);
}

它在 setTimeout 回调中抛出一个现实生活中的错误,它不会停止测试执行,并将检查是否在另一个 setTimeout 中的 100 毫秒后调用了一个 spy ,然后调用 done() 这就是如何您使用 Buster.JS 测试异步功能。 The same approach is available with Jasmine通过在异步测试中使用 done()

关于javascript - 用 jasmine 单元测试 window.onerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com