2013-12-23 52 views
8

有很多问题询问如何在量角器测试中模拟http响应。如何做到这一点不是问题,我们应该这样做是一个问题。AngularJS量角器测试 - E2E测试是否有固定装置?

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

我已经超过4年QA工程师,大部分既低电平(单位)控制器的测试,模型等,高层次(集成)测试我的自动化测试经验的交易完整的系统。在我的红宝石世界体验中,我们使用Capybara进行集成测试以及蓝图和工厂女生(针对不同项目)来创建模拟数据库条目。这是我们的集成/ E2E测试。

我最近才转移到使用AngularJS的JavaScript团队。最初的内置测试框架(现已弃用)具有模拟的后端模块,它似乎适合我们的需求。量角器现在是标准。只有量角器蒸过后,我才听到使用夹具进行E2E测试的反应。很多帖子都指出E2E测试应该测试整个堆栈,所以任何后端都不应该被嘲弄并且可以访问。

应该集成测试使用器材,为什么?

+0

我使用这两种测试。使用模拟后端测试“E2E”测试来测试UI的细节(当单击按钮B时出现div A等),以及使用真实后端更粗粒度的E2E测试来确保前端和后端的工作原理应该如此。 –

+1

我的想法是,您应该能够在没有后端的情况下进行E2E测试 - 因为后端可能与前端不同,而且时间线可能不同。 Mocks可以成为推进开发的有用工具,并且可以轻松地将写入的测试更改为在不再需要模拟时接受实际的后端。 – jonh

+0

为什么不使用灯具而关心的是,当我多次为创建操作运行E2E测试时,我将在我的数据库中创建越来越多的虚拟数据并清除该数据将涉及我的过程中的另一个步骤。 – wbeange

回答

0

是的,我们使用ngMockE2E来模拟后端,然后我们将一些帮助器暴露给窗口对象,这样我们就可以播种各种模拟数据状态。我们还使用兴农给力测试日期sensative UI特定的时间,使所有新的Date()调用返回你想

+2

你们有没有搬到量角器?它不能很好地与ngMockE2E提供的模拟后端一起工作 - 我知道一些人已经开始工作 - 但我没有。 – jonh

2

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

戈杰科·阿德齐奇,在“规范由例如”一书中,recommands做功能,基于夹具的测试,即,“应用程序的皮肤下面的”无UI的一部分。

回答你的问题:

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

- 如果后端测试有夹具?是的

+0

你能否详细说明一下“UI测试是否有夹具?不,使用模拟或存根”?谢谢 –

+0

我的意思是夹具不仅要让测试正常工作,还要考虑随之而来的业务相关用例。在UI上工作时有时候是有道理的,但不能仅基于UI可以实现的所有业务案例进行测试。 – bdavidxyz

0

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

  1. 使用Grunt运行测试。
  2. 启动节点服务器之前,使用猫鼬灯具设置MongoDB的测试数据库(https://github.com/powmedia/mongoose-fixtures
  3. 用参数启动节点服务器,使其使用测试分贝。

如果在不同的堆栈上,您可以采用这种方法,尽管Grunt作为一般工作的参与者非常有帮助。

1

你在问2个问题 - 关于e2e测试集成测试。 :)

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

集成测试是你的代码的一部分,并单元测试是个别单位。这两次都可以嘲笑部分或全部依赖项来隔离测试。

因此,在所有使用固定装置或嘲笑的情况下都可能有用。

查看my answer here了解更多关于Karma和量角器的用例,优点和局限性的详细讨论。