Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用Karma测试非平凡的AngularJS应用程序_Apache_Angularjs_Jasmine_Karma Runner_Angular Scenario - Fatal编程技术网

Apache 使用Karma测试非平凡的AngularJS应用程序

Apache 使用Karma测试非平凡的AngularJS应用程序,apache,angularjs,jasmine,karma-runner,angular-scenario,Apache,Angularjs,Jasmine,Karma Runner,Angular Scenario,我一直在写一篇文章,试图为我一直在开发的应用程序设置一个测试套件。该应用程序在本地托管,在大多数帐户上运行良好。我试着通过AngularJS的网站、karma的网站以及几乎所有我能找到的其他网站上的说明来设置karma,但我一直都会遇到同样的错误 这是我的配置文件: urlRoot = '/karma/'; frameworks = ['ng-scenario']; files = [ ANGULAR_SCENARIO, ANGULAR_SCENARIO_ADAPTER, 'spec

我一直在写一篇文章,试图为我一直在开发的应用程序设置一个测试套件。该应用程序在本地托管,在大多数帐户上运行良好。我试着通过AngularJS的网站、karma的网站以及几乎所有我能找到的其他网站上的说明来设置karma,但我一直都会遇到同样的错误

这是我的配置文件:

urlRoot = '/karma/';
frameworks = ['ng-scenario'];
files = [
  ANGULAR_SCENARIO,
  ANGULAR_SCENARIO_ADAPTER,
  'spec/e2e/*.spec.js'
];
browsers = [
  'Firefox',
];
proxies = {
  '/': 'http://localhost/web/',
};
port = 9876;
singleRun = false;
junitReporter = {
  outputFile: 'logs/e2e.xml',
};
logLevel = LOG_DEBUG;
还有一个示例规范:

describe('login test', function() {

  it('should login', function(){
    browser().navigateTo('/');
    if(browser().window().path() != '/'){
      expect(element('[ng-model="username"]').count()).toBeGreaterThan(0);
      input('username').enter('username');
      input('password').enter('password');
      element('#submit').click();
      sleep(3);
    }
    expect(browser().window().path()).toEqual('/');
  });

  it('should logout', function(){
    element('#quit').click();
    element('quit_dialog').click();
    sleep(1);
  });
});
当我通过angular场景在html文件中运行测试时,它运行良好,全部为绿色。当我通过karma运行它时,我得到以下错误:

Error: Permission denied to access property 'angular'
我怀疑这是一个跨域问题,但为什么?如果是的话,我该如何修复它

注意:我的应用程序将某人从基本url重定向到登录页面。我认为因果报应可以处理重定向


编辑:我克隆了它,并没有动过它(除了更改代理url),一切正常。

当重新加载整个页面时,Karma失去了“钩子”

我目前采用的最佳解决方案是手动导航到该页面

例如,如果您从“/login”开始并登录,这会导致页面重定向到“/home”,Karma将失去钩子。因此,登录后,您需要通过手动加载页面重新获得钩子,例如:

browser().navigate("/login");
//Do login
element("submitButton").click();
//Page gets redirected to /home after successful login, Karma loses hook
browser().navigate("/home"); //Manually navigate to page to regain hook

这有点像黑客,但这是我知道的最好的方法。

当重新加载整页时,Karma失去了“钩子”

我目前采用的最佳解决方案是手动导航到该页面

例如,如果您从“/login”开始并登录,这会导致页面重定向到“/home”,Karma将失去钩子。因此,登录后,您需要通过手动加载页面重新获得钩子,例如:

browser().navigate("/login");
//Do login
element("submitButton").click();
//Page gets redirected to /home after successful login, Karma loses hook
browser().navigate("/home"); //Manually navigate to page to regain hook

这有点像黑客,但这是我所知道的最好的方法。

Vojta对Github的评论:“这不是一个TestCular问题。TestCular应该在每个测试和每个测试套件中都有一个超时,这样它就不会永远挂起(这已经在我的待办事项列表中)。”问题是angular scenario runner不支持整页重新加载。“Vojta对Github的评论:”这不是一个遗嘱问题。TestCular在每个测试和每个测试套件中都应该有一个超时,这样它就不会永远挂起(这已经在我的待办事项列表中了)。“问题是angular scenario runner不支持完整页面重新加载。”此功能奇怪且令人困惑,但正如您所说,它工作正常此功能奇怪且令人困惑,但正如您所说,它工作正常