【发布时间】:2025-11-24 19:15:01
【问题描述】:
目前,我尝试与我的开发团队成员一起为我们的 javascript 解决方案开发一些模块化系统。因为我们能够重新开始,所以这次我们想把它做好——通过测试!
我们发现 Jasmine 和 Karma 用于我们的单元测试和 Selenium/Nightwatch 用于我们的端到端测试。
当我为那些从未通过 jQuery 接触任何 DOM 的系统组件编写单元测试时,我很高兴。但是有一天,我遇到了一些操纵 DOM 的组件。到目前为止,一切都很好。感谢 Jasmine-jQuery,我也设法测试了它们。在此之前,我确信仍然在单元测试的范围内。
不过,昨天,我正坐在一个组件前面,当用户要向下滚动网页时,它会使导航栏变得粘滞(或固定)。
我想再次用 Jasmine-jQuery 测试这个功能。我所做的是 - 我用“window.scrollTo(0, 2000)”模拟用户滚动,然后检查这些导航栏的属性是否已更改。
问题:
因为我需要模拟浏览器功能,我已经跨入域进行端到端测试,因此我的团队领导让我暂停。
我的问题:真的是这样吗?在我的选择中,端到端测试应该在生产环境中测试系统(如我们的)的多个功能的编排。因此,用户故事将是我将使用端到端测试进行测试的层。检查用户登录和撰写文章(例如)的路径是否按预期工作。 但是在某些事件(如滚动事件)发生后检查 javascript 组件是否会成功向 DOM 添加/删除属性 - 仍然应该是一个单元测试。
我是一名学徒开发人员 - 我尊重团队领导的经验 - 但我仍然想完全确保事情会以正确的方式完成。
所以我问你是否可以告诉我在编写 JavaScript 和操作 DOM 时单元测试何时结束以及端到端测试何时开始。
一些队友向我解释说,如果您检查故障对用户体验的影响程度,这可能是一个很好的方式来了解它是否是 E2E 测试特定功能。但前提是你真的在单元测试和 E2E 之间挣扎。然后你应该问自己“失败会导致非常糟糕的用户体验,还是只会在控制台中抛出一些错误并且无法正确加载小图片”。
【问题讨论】:
标签: javascript unit-testing jasmine karma-jasmine end-to-end