AngularJS量角器测试 - E2E测试应该有固定装置吗?

时间:2013-12-23 19:13:00

标签: angularjs testing integration protractor

有很多问题要求如何在量角器测试中模拟http响应。如何做到这一点不是问题,如果我们这样做就是问题。

http://en.wikipedia.org/wiki/Test_fixture#Software

我已经担任QA工程师超过4年,我的大部分自动化测试经验都涉及控制器,模型等的低级(单元)测试以及整个系统的高级(集成)测试。在我的ruby世界体验中,我们使用Capybara进行集成测试以及blueprint和factorygirl(针对不同的项目)来创建模拟数据库条目。这是我们的集成/ E2E测试。

我最近才转向使用AngularJS的javascript团队。最初的内置测试框架(现已弃用)有一个模拟后端模块,似乎适合我们的需求。量角器现在是标准配置。只有在量角器蒸熟之后,才能听到使用固定装置进行E2E测试的强烈反应。许多帖子指出E2E测试应该测试完整的堆栈,因此任何后端都不应该被模拟并且可以访问。

集成测试是否应使用灯具?为什么?

4 个答案:

答案 0 :(得分:2)

这里有一个词汇问题。 Angular世界中所谓的“e2e”测试与端到端测试无关。它只是UI部分的端到端,这意味着根本没有e2e测试。这是UI测试。

Gojko Adzic在“spec by example”一书中,建议“在应用程序的皮肤下”进行基于夹具的功能测试,即没有UI部分。

回答你的问题:

- UI测试有夹具吗?不,使用模拟或存根

-Should后端测试有夹具吗?是

答案 1 :(得分:1)

您提出两个问题 - 关于 e2e测试集成测试。 :)

e2e测试,至少在Angular的世界中,正在测试您的完整应用程序,因为真实用户可以与之交互。这包括测试您的后端请求和响应。但是,如果运行缓慢且需要资源,那么切换到后端的较小(甚至是假的)版本进行测试是完全合理的。

集成测试是代码的一部分,单元测试是关于单个单元的。两次都可以模拟一些或所有依赖项来隔离测试。

所以在所有情况下使用灯具或模拟都很有用。

有关Karma和量角器的用例,优点和局限性的详细讨论,请参阅my answer here

答案 2 :(得分:0)

是的,我们使用ngMockE2E模拟后端,然后我们将一些帮助器暴露给窗口对象,这样我们就可以播种各种模拟数据状态。我们还使用sinon强制测试日期敏感UI的特定时间,以便所有新的Date()调用返回您想要的内容

答案 3 :(得分:0)

我在这里遇到了与个人代码项目相同的问题。我使用MEAN堆栈,我的解决方案是:

  1. 使用Grunt运行测试。
  2. 在启动Node服务器之前,使用mongoose fixtures设置Mongodb测试数据库(https://github.com/powmedia/mongoose-fixtures
  3. 使用参数启动节点服务器,以使其使用测试数据库。
  4. 如果在不同的堆栈上,你可以采取这种方法,尽管Grunt作为一般的职业运动员非常有帮助。