我的angularJS应用程序使用事件蒸,它保持打开http事件-蒸汽请求和侦听服务器事件。因此,我的问题是,当量角器开始测试我的angularJS应用程序时,它一直在等待完成事件流请求,因为我使用的是ignoreSynchronization=false,所以量角器等待,直到超时作为事件流http请求永远不会完成。所以我想教我的量角器忽略这样的事件流$http任务,并对我的应用程序进行测试。这些事件流是在我的应用程序的整个过程中实现的,所以每次都有事件流请求,然后量角器得到超时。
超时时会遇到以下错误:失败:超时等待异步角任务在300秒后完成。这可能是因为当前页面不是一个角度应用程序。请参阅常见问题的更多细节:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular。以下任务挂起:- $http:https://example.com/custom/xxx/sse
有人能帮我解决这个问题吗?
发布于 2017-07-10 15:12:10
谢谢@quirimmo你的宝贵答复。
我们可以在不使用模拟后端调用的情况下实现超时问题,只需修改http请求并将超时设置为http请求,以便量角器等待到我们已经设置的请求获取超时为止(超时将关闭长期运行的http请求)并执行进一步的语句。
发布于 2017-06-05 21:11:35
在量角器中,您可以添加模拟。因此,实际上,您可以做的是添加几个模拟模块来模拟您需要的任何东西。
如果问题只是与异步请求计时的超时有关,则还可以从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!");
})
})
您也可以在测试中直接定义模拟,但是如果您想在测试中全局地定义模拟,我建议您直接在onPrepare
方法中在protractor.config.js
中定义模拟。
我希望它能帮上忙
https://stackoverflow.com/questions/44377469
复制相似问题