这里有很多关于其他语言的单元测试事件处理程序的问题,但在JavaScript方面我还没有找到一个好的答案。具体来说,我在谈论一个案例:
// inside a "view" class definition:
handleCheckboxClick: function() {
this.relevantData.toggleSomeValue();
return false;
}
// later on:
$('#someCheckbox').on('click', view.handleCheckboxClick);
显然事件处理程序(this.relevantData.toggleSomeValue()
)中存在逻辑,但同时没有其他方法会调用此处理程序,因此它不像单元测试那样会捕获一些未来的重构相关的bug。在任何给定的JavaScript代码库中都有很多这样的处理程序,因此测试它们是非常重要的工作。
此外,在许多JS商店(当然在我们的商店中),还有使用Selenium进行的功能级测试,通常会捕获明显的UI问题(例如,当事件处理程序中断时)。
所以,一方面我得到了#34;逻辑的单元测试==好",如果我付钱,我不想通过不测试某些代码来自责为了它以后。另一方面,当涉及单元测试时,这个特定的代码子集似乎具有高成本和低价值。因此,我对SO社区的问题是,JS开发人员应该对其事件处理函数进行单元测试吗?
答案 0 :(得分:4)
这绝对属于意见问题,但我会继续给我的:)
否
根据我的经验,在单元级别测试这样的处理程序并不符合成本效益。我通常最终花费大量时间站起来并引发人工事件;这会导致通过测试,但对我的视图在现实世界中正常运行的信心不大(它也不是很有趣)。我发现在其他地方花费的时间要好得多。
某种覆盖 非常重要,我尝试使用以下方法实现这一目标:
对于所有应用程序或团队来说并非如此,但事实证明,对于我所工作的团队和应用程序来说,它是最有效的。我有兴趣听听别人对此事的看法。