deo*_*lem 15 unit-testing mocking angularjs protractor e2e-testing
我想在我们团队的项目中建立一个坚实的e2e测试基础,但我找不到这个问题的简单解决方案:
当您模拟所有调用时,检测服务器返回的对象的实际模型是否已被修改的最佳方法是什么?
您的测试仍然会通过,因为他们正在测试模型的过时版本但应用程序可能已损坏.
例如,如果一个模拟假设/api/users/1
返回null
,如果用户不存在,当它实际上返回一个空对象,则虽然测试可以通过,被测试的行为依赖于不正确的假设,并且因此可以以意外的方式失败.
或者也许后端以某种方式提供带有最新模型的静态json文件,而前端依赖于此?
这当然假设在后端工作的人和在前端工作的人是独立的团队.
我在这里使用Angular 1.x和Protractor,但这并不依赖于技术.
我认为你在做什么(测试期间的前端隔离)是正确的,保持这种方式.
你可以做些什么来验证你的模拟是其中之一:
1)如果前端和后端紧密耦合并一起开发 - 为后端添加一组单元测试以验证API响应.这样,如果API中的某些内容发生变化,后端测试将失败,您也会知道前端模拟也应该更新.
在开发过程中,您可以定期运行两组测试(e2e和后端单元测试),甚至可以在每次代码更改时运行.
2)如果前端或多或少独立于后端,那么你需要进行一些集成测试,除了e2e测试之外你还要运行.这些应该对后端执行实际的HTTP请求,并将返回的数据结构与您的模拟进行比较.通过这种方式,您可以检测到模拟过时的情况.
第二种方法更可靠,但集成测试可能比后端单元测试慢,因此您只能在CI服务器上自动运行它们,而不能在本地开发期间自动运行它们.
归档时间: |
|
查看次数: |
457 次 |
最近记录: |