JavaScript事件处理程序是否应进行单元测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript事件处理程序是否应进行单元测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1849字,纯文字阅读大概需要3分钟。
内容图文
![JavaScript事件处理程序是否应进行单元测试](/upload/InfoBanner/zyjiaocheng/794/f7b1762381e240da8e385932b12b8820.jpg)
这里有很多关于其他语言的单元测试事件处理程序的问题,但是在JavaScript方面我找不到一个好的答案.具体来说,我说的是一个案例:
// inside a "view" class definition:
handleCheckboxClick: function() {
this.relevantData.toggleSomeValue();
return false;
}
// later on:
$('#someCheckbox').on('click', view.handleCheckboxClick);
显然,事件处理程序中存在逻辑(this.relevantData.toggleSomeValue()),但同时没有其他方法会调用此处理程序,因此它不像单元测试那样会捕获一些未来与重构相关的错误.在任何给定的JavaScript代码库中都有很多这样的处理程序,因此测试它们是非常重要的工作量.
此外,在许多JS商店(当然也包括我们的商店)中,还有使用Selenium进行的功能级测试,通常会捕获明显的UI问题(例如当事件处理程序中断时).
所以,一方面我得到了“单位测试逻辑==好”,而且我不想通过不测试某些代码来拍摄自己,如果我稍后付钱的话.另一方面,当涉及单元测试时,这个特定的代码子集似乎具有高成本和低价值.因此,我对SO社区的问题是,JS开发人员是否应该测试他们的事件处理函数?
解决方法:
这肯定属于意见问题,但我会继续给我的:)
没有
根据我的经验,在单元级别测试这样的处理程序并不符合成本效益.我通常最终花费大量时间站起来并引发人工事件;这导致通过测试,但对我的视图在现实世界中正常运行的信心不大(这也不是很有趣).我发现在其他地方度过的所有时间都要好得多.
但是,某种覆盖范围很重要,我尝试使用以下方法实现这一目标:
>将处理程序中的复杂逻辑移动到可以单独测试的辅助函数中.理想情况下,它们足够“纯净”,可以在单位环境中轻松测试.如果它们不容易测试,请忘记它们!
>依靠集成测试来测试与您的视图的交互.这是测试各种互动场景的最简单的地方,例如“当我在textarea中输入一条消息并按下回车键时,会出现一条新消息”,而不会产生人为触发交互的麻烦.不是写硒测试是我对美好时光的想法;)
>放松.覆盖范围最好用测试的功能测量,而不是测试的方法/处理程序.如果您确信您对应用程序的交互做出的假设被“覆盖” – 以这种或那种方式 – 那么您已经完成了自己的工作.
对于所有应用程序或团队来说并非如此,但事实证明,这对我所参与的团队和应用程序来说是最有效的.我很想知道其他人对此事的看法.
内容总结
以上是互联网集市为您收集整理的JavaScript事件处理程序是否应进行单元测试全部内容,希望文章能够帮你解决JavaScript事件处理程序是否应进行单元测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。