0

AngularJS/Karma のエンド ツー エンドのテスト環境を Rails バックエンドで動作させるのは非常に難しいようです。

Karma をインストールして、次の構成ファイルで実行しています。

basePath = '../';

files = [
  ANGULAR_SCENARIO,
  ANGULAR_SCENARIO_ADAPTER,
  'test/e2e/**/*.js'
];

autoWatch = false;

browsers = ['Chrome'];

// singleRun = true;

proxies = {
  '/': 'http://local.mywebsite.com:3000/'
};

urlRoot = 'e2e';

junitReporter = {
  outputFile: 'test_out/e2e.xml',
  suite: 'e2e'
};

http://local.mywebsite.com:3000/は私のRailsアプリケーションです。

私は非常に簡単なテストを試みます:

it('should redirect to /', function() {
  expect(browser().location().url()).toBe("/");
});

しかし、私は次のエラーで立ち往生しています:

http://localhost:9876/base/test/e2e/scenarios.js:8:5

TypeError: Object [object Object] has no method 'resumeBootstrap'
    at HTMLIFrameElement.<anonymous> (http://localhost:9876/adapter/lib/angular-scenario.js:26285:27)
    at HTMLIFrameElement.jQuery.event.dispatch (http://localhost:9876/adapter/lib/angular-scenario.js:3064:9)
    at HTMLIFrameElement.elemData.handle.eventHandle (http://localhost:9876/adapter/lib/angular-scenario.js:2682:28)
    at k (http://connect.facebook.net/en_US/all.js:48:745)

scenario.js はhttps://github.com/angular/angular-seedから来ています。

それを機能させる方法はありますか?

4

3 に答える 3

2

試す

it('should redirect to /', function() {
  browser().navigateTo("/");
  expect(browser().window().path()).toBe("/");
});
于 2013-07-07T21:31:52.143 に答える
1

Angular シナリオ ランナーの最新バージョンを取得します。不安定なバージョンは次の場所にあります。

http://code.angularjs.org/1.1.4/angular-scenario.js

安定版は

http://code.angularjs.org/1.0.6/angular-scenario.js

次に、必ず最新のシナリオ ランナーを使用するようにカルマ構成を更新してください。

files = [
    'path/to/angular-scenario.js',
    ANGULAR_SCENARIO_ADAPTER,
    'test/e2e/**/*.js'
];

うまくいけば、それは役に立ちます。

于 2013-05-03T19:43:56.977 に答える
1

上記の解決策は正しいです。このリンクは問題をカバーしています: https://github.com/karma-runner/karma/issues/470

http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.htmlで優れた例を実行しているときに、同じ問題に遭遇しました。

始めたばかりの場合、これは素晴らしいリソースですが、testacular から karma に更新し、angularjs を 1.0.6 に更新する必要があります。

于 2013-05-07T02:57:57.247 に答える