【问题标题】:Testing a non-trivial AngularJS app with Karma使用 Karma 测试一个重要的 AngularJS 应用程序
【发布时间】:2013-05-31 07:14:12
【问题描述】:

我一直在尝试为我正在开发的应用程序设置测试套件。该应用程序在本地托管,并且在大多数帐户上都可以正常工作。我尝试通过 AngularJS 网站、Karma 网站以及我能找到的几乎所有其他网站上的说明设置业力,但我一直收到同样的错误。

这是我的conf:

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-scenario 在 html 文件中运行测试时,它工作正常,全是绿色的。当我通过业力运行它时,出现以下错误:

Error: Permission denied to access property 'angular'

我怀疑这是一个跨域问题,但为什么呢?如果是这样,我该如何解决?

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

编辑:我克隆了 angular-seed 并原封不动地运行它(除了更改代理 url),结果很好。

【问题讨论】:

  • Vojta 在 Github 上发表评论:“这不是 Testacular 问题。Testacular 应该在每个测试和每个测试套件都有一个超时,这样它就不会永远挂起(这已经在我的待办事项列表上) . “问题是角度场景运行器不支持整页重新加载。”

标签: apache angularjs jasmine karma-runner angular-scenario


【解决方案1】:

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

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

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

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

这有点小技巧,但这是我所知道的最好的方法。

【讨论】:

  • 这个功能很奇怪而且很混乱,但是就像你说的,它可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 2013-05-16
  • 1970-01-01
  • 2014-05-04
  • 2014-09-20
相关资源
最近更新 更多