2

我的 angularJS 应用程序使用事件蒸汽,它保持打开 http 事件蒸汽请求和监听服务器事件。所以我的问题是当量角器开始测试我的 angularJS 应用程序时,它一直等待完成事件流请求,因为我正在使用 ignoreSynchronization=false 所以量角器一直等到超时,因为事件流 http 请求永远不会完成。所以我想教我的量角器忽略此类事件流 $http 任务并继续测试我的应用程序。这些事件流在我的整个应用程序中实现,因此每次有事件流请求时量角器都会超时。

超时时出现以下错误:失败:超时等待异步 Angular 任务在 300 秒后完成。这可能是因为当前页面不是 Angular 应用程序。有关更多详细信息,请参阅常见问题解答:https ://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular 。以下任务待处理: - $http:https ://example.com/custom/xxx/sse

谁能帮我摆脱这个问题?

4

2 回答 2

3

在量角器中,您可以添加模拟。所以实际上你可以做的是添加一些模拟模块来模拟你需要的任何东西。

如果问题仅与异步请求计时的超时有关,您还可以从 更改该超时值protractor.config.js,增加它。

顺便说一句,回到模拟,您定义模拟并通过browser.addMockModule方法将它们添加到量角器中。

这是一篇关于量角器模拟的好文章:

http://eitanp461.blogspot.ie/2014/01/advanced-protractor-features.html

这里有一个很好的 npm 模块,以方便您模拟 angularjs $http 请求:

https://github.com/atecarlos/protractor-http-mock

这可能是直接模拟模块的一个小例子,而不使用上面的节点模块:

browser.addMockModule('httpMocker', function() {
  angular.module('httpMocker', ['ngMockE2E'])
  .run(function($httpBackend) {
    $httpBackend.whenGET('MYURL')
    .respond("MOCKED RESPONSE!");
  })
})

您也可以直接在测试中定义模拟,但如果您希望在测试中全局使用模拟,我建议您直接onPrepareprotractor.config.js.

我希望它有帮助

于 2017-06-05T21:11:35.323 回答
0

感谢@quirimmo 的宝贵回复。

我们可以在不使用模拟后端调用的情况下通过简单地修改 http 请求并将超时设置为 http 请求来解决超时问题,以便量角器等待直到我们已经设置的请求超时(超时将关闭长时间运行的 http 请求)并执行进一步的语句。

于 2017-07-10T15:12:10.557 回答