gpt4 book ai didi

javascript - 如何使用 Intern 在功能测试期间报告 JavaScript 错误?

转载 作者:行者123 更新时间:2023-11-29 19:36:11 26 4
gpt4 key购买 nike

如何使用 Intern 报告测试执行期间发生的 JavaScript 错误?基本上,如果页面上有任何 JavaScript 错误(即使是未明确测试的部分错误)我想知道。

背景

我刚刚开始使用 Intern 并进行一般测试,我正在尝试在所有浏览器中测试我网站上的所有主要页面,因为我刚刚将所有 JavaScript 更改为通过 require.js 加载。虽然它在 Chrome 中看起来不错,但我过去遇到过 require.js 和随机浏览器的问题,所以我想自动化一切。最有可能出现的问题是,由于异步加载和预期的全局加载,某些随机 JS 将无法执行。由于没有当前的测试设置,我基本上想通过运行“测试”开始,遍历所有主要页面并报告任何 JavaScript 错误。

最佳答案

为了报告 Uncaught Error ,需要hook页面的window.onerror方法。这是可能的,但页面加载需要在您添加 Hook 之前完成,这意味着在页面加载之前/期间发生的任何错误(或在页面卸载时发生的错误)根本无法被捕获和报告。这也意味着如果您执行移动到新页面的操作(如表单提交),您将需要确保在执行导致导航的操作之前检索错误列表,并重新配置 窗口。到达新页面后的错误处理程序。

要通过功能测试执行此类报告,您的测试最终将如下所示:

return this.remote
.get('http://example.com')
.execute(function () {
window.__internErrors__ = [];
window.onerror = function () {
__internErrors__.push(Array.prototype.slice.call(arguments, 0));
};
})
// ... interact with the page ...
.execute(function () {
return window.__internErrors__;
})
.then(function (errors) {
// read `errors` array to get list of errors
});

请注意(截至 2014 年 8 月)来自 window.onerror 的错误在除最新版本的 Chrome 之外的所有浏览器中仅提供消息、脚本源、行号和(有时)列号,因此此信息仅在说明“此操作导致错误,请手动执行以获取堆栈跟踪”时有用。

在单元测试期间,Intern 已经尝试自动捕获任何未处理的错误并将它们视为会导致系统停止运行的 fatal error (因为您永远不应该拥有生成此类未处理错误的代码)。

关于javascript - 如何使用 Intern 在功能测试期间报告 JavaScript 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966490/

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