如何在功能测试期间使用Intern报告JavaScript错误
How to report JavaScript errors during functional tests using Intern?
我如何使用Intern报告在测试执行期间发生的JavaScript错误?基本上,如果页面上有任何JavaScript错误(即使是未明确测试的内容的一部分),我想知道。
我刚刚开始使用实习生和一般测试,我试图在所有浏览器中测试我网站上的所有主要页面,因为我刚刚更改了我们所有的JavaScript以通过require.js加载。虽然它在Chrome中看起来不错,但我过去在require.js和随机浏览器上遇到过问题,所以我想让一切都自动化。最可能出现的问题是,由于异步加载和加载预期的全局变量,一些随机的JS将无法执行。由于目前没有测试设置,我基本上想从运行"测试"开始,通过所有主要页面并报告任何JavaScript错误。
为了报告未捕获的错误,您需要挂钩页面的window.onerror
方法。这是可能的,但是页面加载需要在添加钩子之前完成,这意味着在页面加载之前/期间发生的任何错误(或在页面卸载时发生的错误)都无法被捕获和报告。这也意味着,如果您执行移动到新页面的操作(如表单提交),则需要确保在执行导致导航的操作之前检索错误列表,并在到达新页面后重新配置window.onerror
处理程序。
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已经尝试自动捕获任何未处理的错误,并将它们视为导致系统停止的致命错误(因为您永远不应该有生成这种未处理错误的代码)。
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- angularjs$valid-on-dates在firefox中报告错误
- 使用c#中的邮件附件javascript在客户端机器上获取服务器端导出的crystal报告路径.下面的
- 如何将因果报应测试报告上传到声纳
- "未捕获的语法错误:意外的标记<"当尝试使用谷歌'核心报告API
- 在Meteor js中生成PDF报告
- 我可以把茉莉花规格报告器的输出写入文件吗
- 为什么jslint报告Unexpected'变量'
- 禁用报告的2个未来日期
- nodejs:child_process.spawn未报告退出代码
- 使用AddThis-config-data_ga_property向两个Google Analytics配置文件报告
- Intern的源地图
- 如何修复JSlint报告的“foo未定义”错误
- Google Analytics(分析)多跟踪帐号维度数据部分未显示在报告中
- 生成图形图表报告
- 从 Node/Express/Angular/PhantomJS 导出带有图表的 PDF 报告
- 被动.js模式间接观察者报告相同的值
- Ajax 报告成功,但数据库没有任何变化
- Javascript错误“XML不能是整个程序”在FireFox中使用jQuery中的getScript()报告
- 如何在功能测试期间使用Intern报告JavaScript错误