1

私が開発しているアプリケーションのテストスイートをセットアップしようとして書いています。アプリはローカルでホストされ、ほとんどのアカウントで正常に動作します。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 からログイン ページにリダイレクトします。カルマがリダイレクトを処理できると思いました。

EDIT:Angular-seedのクローンを作成し、(プロキシURLの変更を除いて)そのまま実行しましたが、うまくいきました。

4

1 に答える 1

1

ページ全体がリロードされると、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

ちょっとハックですが、私が知っている最善の方法です。

于 2013-06-06T18:31:37.643 に答える