Javascript 角度E2E测试数据:ngMockE2E还是测试数据服务器?

Javascript 角度E2E测试数据:ngMockE2E还是测试数据服务器?,javascript,angularjs,angularjs-e2e,Javascript,Angularjs,Angularjs E2e,我正在开发Angular应用程序(Angular 1.1.5)。我需要一些方法来模拟e2e测试的RESTAPI响应 详细介绍了如何使用$httpBackend对HTTP请求进行单元测试,但对e2e测试几乎没有介绍 文档建议使用mock$httpBackend(这不同于正常的单元测试$httpBackendmock) 我花了几个小时研究了ngMockE2EAPI,虽然我看到了一些好处,但似乎也有很多缺点。我的问题是: 与提供测试响应的简单服务器相比,ngMockE2E有哪些优势?或者更一般地说,测

我正在开发Angular应用程序(Angular 1.1.5)。我需要一些方法来模拟e2e测试的RESTAPI响应

详细介绍了如何使用
$httpBackend
对HTTP请求进行单元测试,但对e2e测试几乎没有介绍

文档建议使用mock
$httpBackend
(这不同于正常的单元测试
$httpBackend
mock)

我花了几个小时研究了
ngMockE2E
API,虽然我看到了一些好处,但似乎也有很多缺点。我的问题是:

与提供测试响应的简单服务器相比,
ngMockE2E
有哪些优势?
或者更一般地说,测试Angular应用程序与服务器交互的最佳方式是什么?

我可以想到一些缺点:

  • 我需要更改HTML以使用不同的角度模块引导应用程序(新模块取决于
    ngMockE2E
    和我的实际应用程序模块)
  • Firebug/Developer工具没有HTTP请求可供检查。这对我来说是个大问题。我最终在模拟后端编写了请求/响应日志记录方法。我想大多数模拟后端都包含此类代码
  • 从URL中提取参数不是一种简单的方法。如果我想从
    /resource/:id
    中获取id参数,我需要提供一个正则表达式来匹配URL(
    \/resource\/.+$
    ),然后在斜杠上拆分匹配的URL字符串并选择最后一个元素
  • API很笨重。返回静态对象很简单,但根据请求的URL动态确定要返回的测试对象很困难。某些应用程序可能能够硬编码一整套测试URL,但我需要测试大量资源,因此这对我来说是不切实际的。更复杂的代码意味着会出现更多错误。
我也能想到一些优点。当使用
ngMockE2E
时:

  • 我不需要告诉我的应用程序测试API在哪里-
    $httpBackend
    将检查所有HTTP请求是否匹配
  • 我根本不需要运行web服务器
  • 我不需要重新启动服务器来获取对测试数据的更改
  • 测试中的整体组件较少。但是,考虑到这是一个集成测试,这并不是一个巨大的好处

对想法和经验非常感兴趣。

经过几周的开发,我的结论是:我找到了一个简单的虚拟后端(Node/Express)比e2e测试模拟后端更灵活、更可维护。最令人信服的原因是正确的URL模式匹配和用于浏览器调试的真实HTTP请求。

您是否使用
karma
量角器来进行e2e测试?