JavaScript单元测试或端到端测试

时间:2016-02-25 07:49:37

标签: javascript unit-testing jasmine karma-jasmine end-to-end

目前我尝试与我的开发团队成员合作,为我们的javascript解决方案设计一些模块化系统。因为我们能够重新开始,所以我们希望这次能够做到 - 通过测试!

我们的单位测试和Selenium / Nightwatch为我们的端到端测试找到了Jasmine和Karma。

当我为那些从未通过jQuery触及任何DOM的系统组件编写单元测试时,我很高兴。但有一天,我遇到了一些操纵DOM的组件。到现在为止还挺好。我还设法测试了它们,感谢 Jasmine-jQuery 。在此之前,我肯定仍然在单元测试的范围内。

昨天,我坐在一个组件前面,一旦用户要将网页向下滚动,就会使导航栏变粘(或固定)。

我想再次使用Jasmine-jQuery测试此功能。我做的是 - 我嘲笑用户滚动" window.scrollTo(0,2000)"然后检查这些导航栏的属性是否已更改。

问题

我的团队负责人让我暂停了,因为我已经跨步到域进行端到端测试,因为我需要模拟浏览器功能。

我的问题:这是真的吗?在我的选择中,端到端测试应该在生产环境中测试系统(如我们的)的几个功能的编排。因此,User-Stories将是我将使用端到端测试进行测试的层。检查用户必须登录并写入文章(例如)的路径是否按预期方式工作。 但是在发生某些事件(如滚动事件)之后检查javascript组件是否会成功地向DOM添加/删除属性 - 应该仍然是单元测试。

我是一名学徒开发人员 - 我尊重团队领导的经验 - 但我仍然希望确保事情能够以正确的方式完成。

所以我问你是否可以在单元测试结束时以及在编写JavaScript和操作DOM时开始端到端测试时告诉我。

一些队友向我解释说,如果你检查一个故障会对用户体验产生多大的影响,那么它可能是一个很好的方法来实现它的E2E测试特定功能。但只有你真的在单元测试和E2E之间挣扎。然后你应该问问自己"失败会导致非常糟糕的用户体验,或者只会在控制台中抛出一些错误而且一些小图片无法正确加载"。

2 个答案:

答案 0 :(得分:1)

在这里你可以找到关于测试之间差异的一个很好的解释:What's the difference between unit, functional, acceptance, and integration tests?。 我认为Selenium with WebDriver是测试E2E的最佳解决方案。如果您正在使用AngularJS,一个非常好的解决方案是使用Protractor(https://angular.github.io/protractor/#/)。

希望这可以帮到你

答案 1 :(得分:0)

查看这篇文章http://www.itaware.eu/2012/10/19/angularjs-unit-tests-and-end-to-end-tests/。它专门处理Angular,但澄清了两者之间的差异。你的团队领导是绝对正确的,它不是你操纵DOM使它成为E2E类型测试的事实,它是你模拟用户界面的事实。