8

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

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

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

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

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

4

4 回答 4

2

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

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

要回答您的问题:

- UI 测试应该有固定装置吗?不,使用模拟或存根

-后端测试应该有夹具吗?是的

于 2014-01-23T16:45:16.037 回答
1

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

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

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

因此,在所有情况下,使用固定装置或模拟都是有用的。

有关Karma 和 Protractor 的用例、优点和限制的更详细讨论,请参阅我的答案。

于 2015-04-14T16:45:02.987 回答
0

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

  1. 使用 Grunt 运行测试。
  2. 在启动节点服务器之前,使用 mongoose 夹具设置 Mongodb 测试数据库(https://github.com/powmedia/mongoose-fixtures
  3. 使用参数启动节点服务器以使其使用测试数据库。

如果在不同的堆栈上,您可以执行类似的方法,尽管 Grunt 作为一般的作业运行器非常有用。

于 2014-08-05T11:39:20.840 回答
0

是的,我们使用 ngMockE2E 来模拟后端,然后向窗口对象公开一些帮助程序,以便我们可以播种各种模拟数据状态。我们还使用 sinon 来强制测试日期敏感 UI 的特定时间,因此所有新的 Date() 调用都会返回您想要的

于 2013-12-31T12:44:55.120 回答