JavaScript单元测试或端到端测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript单元测试或端到端测试相关的知识,希望对你有一定的参考价值。

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

我们为我们的单元测试和Selenium / Nightwatch发现了Jasmine和Karma,用于我们的端到端测试。

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

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

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

问题:

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

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

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

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

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

答案

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

希望这可以帮到你

另一答案

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

以上是关于JavaScript单元测试或端到端测试的主要内容,如果未能解决你的问题,请参考以下文章

在VSTS上发布释放触发器,以运行端到端测试套件

Spring Batch -单元测试

Vue.js—单元测试

五款最热的Node.js端到端测试框架评测

端到端测试 RESTful Web 服务 (Rails)

最受欢迎的 5 款 Node.js 端到端测试框架