1

app/scripts の下に定義されたかなり最小限のアプリ (1 つのコントローラー、3 つのディレクティブ) があります。

でカルマを実行しkarma start、localhost:9100 に移動すると、単体テストが実行されます。ただし、で実行するとkarma start karma-2e2.conf.js、次のエラーが発生します。

    [31mChrome 27.0 (Mac) I haz all the things I haz grid FAILED[39m
TypeError: Cannot read property 'name' of undefined
    Chrome 27.0 (Mac): Executed 1 of 1[31m (1 FAILED)[39m


私のテストは test/e2e/spec/*.js の下にあります

私の karma-e2e.conf.js は次のようになります。

     basePath = '';

    files = [
      ANGULAR_SCENARIO,
      ANGULAR_SCENARIO_ADAPTER,
     'app/components/jquery/jquery.js',
     'app/components/angular/angular.js',
     'test/e2e/**/*.js'
    ];

    proxies = {
      '/' : 'http://localhost:9000'
    }
    exclude = [];

    reporters = ['progress'];

    port = 8080;

    runnerPort = 9100;
    colors = true;

    logLevel = LOG_INFO;

    autoWatch = false;

    browsers = ['Chrome'];

    captureTimeout = 5000;

    singleRun = false;

私のテストは次のとおりです。

 describe('I haz all the things', function(){
   beforeEach(function(){
     browser().navigateTo('/');
   });

  it('I haz grid', function(){
    expect(angular.element('div.grid-item').count).toEqual(1);
  });
  });

なぜ失敗し、どうすれば修正できますか?

4

1 に答える 1

3

テストの構文が間違っています

次のようにする必要があります。

expect(repeater('div.grid-item').count()).toEqual(1);

e2e ドメイン固有言語について調べてください... これは angular や jquery ではありません。少し不思議ですが、強力です。

e2e テストをより適切にデバッグするには、Karma を使用する代わりにテスト ランナーを使用します。これは、angular-seed スターター アプリに含まれる runner.html というファイルです。

<!doctype html>
<html lang="en">
  <head>
    <title>End2end Test Runner</title>
    <script src="../lib/angular/angular-scenario.js" ng-autotest></script>
    <script src="scenarios.js"></script>
  </head>
  <body>
  </body>
</html>

ブラウザーで runner.html に移動するだけで、目の前でテストの実行が開始されます。更新して再実行するだけです。テストに pause() を追加すると、その時点でテストが停止し、続行するように求められます。firebug または別のデバッガーを使用して、アプリの状態を確認できます。

于 2013-06-07T07:31:45.360 に答える