JavaScript 单元测试或端到端测试

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

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

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

虽然我正在为那些从未通过 jQuery 接触过任何 DOM 的系统组件编写单元测试,但我很高兴。但是有一天我遇到了一些操纵 DOM 的组件。到目前为止,一切都很好。感谢 Jasmine-jQuery,我也设法测试了它们。直到此时,我确信仍处于单元测试的范围内。

不过昨天,我坐在一个组件前,只要用户要向下滚动网页,它就会使导航栏固定(或固定)。

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

问题:

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

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

我是一名学徒开发人员 - 我尊重我的团队负责人的经验 - 但我仍然想完全确保以正确的方式完成工作。

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

一些队友向我解释说,如果您检查故障对用户体验的影响有多严重,这可能是了解它是否是 E2E 测试特定功能的好方法。但前提是您真的在单元测试和 E2E 之间挣扎。然后你应该问问自己“失败会导致非常糟糕的用户体验,还是只会在控制台中抛出一些错误并且无法正确加载小图片”。

最佳答案

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

希望对你有帮助

关于JavaScript 单元测试或端到端测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621275/

相关文章:

java - 为网络相关类编写单元测试

检查 VS 谷歌测试框架的 C 代码

java - 如何使用 Guava MapInterfaceTest 来测试您的类

javascript - Jasmine 无法实例化 Angular 模块?

jasmine - 设置数据库 - 与 Jasmine/Jest 的集成测试

jasmine - 语法错误: Unexpected token static

javascript - 直接为原型(prototype)的属性赋值与.extend 的区别

javascript - 使用 mongodb 操作运行 for-in 循环

javascript - Fabric.js 添加图片顺序

javascript - 如何在表单数据上附加多个文件输入