模拟连接错误

ale*_*cxe 10 javascript testing selenium angularjs protractor

我们一直在protractor用于端到端测试.

现在我们试图涵盖几个极端情况,其中涉及修改API端点请求的响应 - 为此我们正在使用protractor-http-mock它提供了一种易于使用的方法来用预定义的模拟替换HTTP响应.

但是,如果我们想测试突然发生连接丢失的情况怎么办?在这种情况下我们有什么选择?

换句话说,我们希望实现一种情况,即对特定端点的请求会产生网络连接错误并查看我们的应用程序将如何反应.


我对任何建议持开放态度,我目前正在考虑以下策略:

  • 看看是否有类似的第三方nodejs库 protractor-http-mock
  • 模拟$httpangularjs服务
  • 启动代理并在测试期间以某种方式控制它(grunt-connect-proxy虽然我不确定是否可以动态地将代理的行为从规范更改为规范,但看起来相当成熟)
  • 在浏览器级别控制它 - 例如使用网络限制谷歌浏览器功能(虽然我很确定它是selenium无法控制的,使用chrome和selenium进行网络限制)(浏览器插件/扩展名?)

Mat*_*nez 2

我希望这可以帮助您定义实现模拟的最佳方式。

该项目解释了总体思路,存在语义和翻译问题readme.md,我很快就会解决这个问题,请耐心等待。请忘记我的英语/拼写错误,让我知道任何更正

我正在做这个演示项目,如何实现Protractor + CucumberJS + Sugar-step。目前它包含一个非常非常简单的 Angular APP 和 3 个 E2E 测试。

该演示正在运行,但尚未完成,仍然需要一些我认为对 E2E 测试有用的功能。

  • 第一个测试根据默认服务检查服务(开发环境模拟)
  • 第二个测试检查服务请求是否返回状态代码 404 的错误
  • 第三个测试检查服务请求是否返回状态代码 500 的错误

如何为每个场景设置不同的模拟响应?

  • 使用Cucumber的Around功能,可用于angular.module('mock-Service-response-x',fn...)在任何功能或场景之前注入a,并在功能或场景运行后将其删除

通过这种方式可以测试什么?

  • 任何类型的场景、极端延迟的响应、响应任何状态代码、响应用于测试非常特殊场景的特殊数据,否则这些场景将不可能/难以从正常的后端服务获得,例如后端的数据不一致

为什么要在 AngularJS 中实现 UI-Mocks 而不是使用代理?

  • UI 控制当然取决于您的特定需求)使用 Angular 您可以执行以下操作:完全禁用ngAnimationsjQuery动画、模拟您的本地浏览器Date、自动模拟取决于日期的行为。

  • 成本取决于您的项目)为每个开发环境中的所有 Web 服务实现本地代理的成本可能会很昂贵(在硬件、工作量或实施时间方面)。

  • 依赖性,如果您的开发团队并行工作,则更有可能相互依赖,如果 UI 团队正在开发依赖于 X Web 服务的功能,了解 UI 团队可以创建简单模拟的实现规范继续他的工作,使孔项目更有可能按时交付

所有这些论点取决于您正在处理哪个项目,并不意味着这是最好的解决方案,但我更赞成保持项目层彼此独立,并能够发布新的无论其他层是否在其自己的新功能中延迟,都将其放在某一层中。

对于任何阅读本文的人,我们都非常欢迎任何评论、更正或建议