Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 在远程selenium服务器上运行Protractor测试时,Jasmine spec超时大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有本地运行良好的Protractor测试(directConnect:truE),但是当我尝试在远程SELEnium服务器(Grid)上运行它们时,我总是收到以下消息.
A Jasmine spec timed out. ResetTing the WebDriver Control Flow.

查看故障,消息和堆栈显示以下所有测试用例:

message:
  Error: Timeout - Async callBACk was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAl.
Stack:
  Error: Timeout - Async callBACk was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAl.
    at Timer.listOnTimeout (timers.js:92:15)

我尝试了很多东西,例如增加jasmine超时间隔,将更早的超时(例如getPageTimeout和allScriptsTimeout)@L_696_7@到conf,但它仍然会抛出jasmine超时错误.该日志显示以下错误

00:03:18.328 INFO - Done: [execute async script: try { return (function (rootSELEctor,ng12Hybrid,callBACk) {
var el = document.querySELEctor(rootSELEctor);

try {
  if (!ng12Hybrid && window.getAngularTestability) {
    window.getAngularTestability(el).whenStable(callBACk);
    return;
    }
  if (!window.angular) {
    throw new Error('window.angular is undefined.  This Could be either ' +
      'because this is a non-angular page or because your test involves ' +
      'client-side navigation,which can interfere with Protractor\'s ' +
      'bootstrapping.  See http://git.io/v4gXM for details');
}
  if (angular.getTestability) {
  angular.getTestability(el).whenStable(callBACk);
}   else {
      if (!angular.element(el).injector()) {
    throw new Error('root element (' + rootSELEctor + ') has no injector.' +
       ' this may mean it is not inside ng-app.');
  }
  angular.element(el).injector().get('$browser').
      notifyWhenNoOutstandingrequests(callBACk);
}
} catch (err) {
callBACk(err.messagE);
}
}).apply(this,arguments); }
catch(E) { throw (e instanceof Error) ? e : new Error(E); },[body,false]])

我知道我的应用程序是有角度的,它在本地运行时运行成功.我试过设定

browser.ignoreSynchronization = true

,以及设置

rootElement='html#ng-app'

在conf(bc我的ng-app不在体内,而是在html标签内).框架被设置为’jasmine然我尝试’jasmine2’但似乎没有任何区别.在远程服务器上,我可以启动firefox,UI会显示启动的firefox会话.然而它只是坐在那里直到超时发生.任何输入将不胜感激!

Jasmine需要知道它正在运行异步进程,并且该进程应该完成(继续执行您可能正在运行的任何其他测试).

这是通过将完成传递给Jasmine异步方法回调并在解析异步操作时调用done()获得的.

如果你没有调用done()Jasmine显示超时错误.我认为这应该可以解决你的问题.

更多信息:
Mocking ngResource in Angular unit tests.

希望这可以帮助!

大佬总结

以上是大佬教程为你收集整理的angularjs – 在远程selenium服务器上运行Protractor测试时,Jasmine spec超时全部内容,希望文章能够帮你解决angularjs – 在远程selenium服务器上运行Protractor测试时,Jasmine spec超时所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。