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