9

Testacular (現在の Karma) は素晴らしいので、angular-scenario も同様です。ただし、それらを一緒に使用することは困難です。Testacular には ANGULAR-SCENARIO-ADAPTER がありますが、それは単純なテストを破ります。angular-scenario.js を自分でインクルードすると、Testacular はテストをまったく実行しません。誰かがこれを適切に実行していますか?

Angular-Scenario-Adapter

これを簡単なテストで使用しようとしましたが、奇妙な動作が見られました。

テスト:

describe('Simple', function(){
    it('should compare strings', function(){
        expect('foo').toBe('foo');
    });
});

config での通常の動作:

files = [
  JASMINE,
  JASMINE_ADAPTER,
//    ANGULAR_SCENARIO,
//    ANGULAR_SCENARIO_ADAPTER,
    'tests/lib/angular/angular.js',

    'tests/sample.js'
];

出力:

$ testacular start
info: Testacular server started at http://localhost:9876/
info (launcher): Starting browser ChromeCanary
info (Chrome 25.0): Connected on socket id KRwEUtKtiaJs3MoiEsNg
Chrome 25.0: Executed 1 of 1 SUCCESS (0.061 secs / 0.003 secs)

ANGULAR アダプター構成を追加する場合:

files = [
  JASMINE,
  JASMINE_ADAPTER,
    ANGULAR_SCENARIO,
    ANGULAR_SCENARIO_ADAPTER,
    'tests/lib/angular/angular.js',

    'tests/sample.js'
];

出力は次のとおりです。

$ testacular start
info: Testacular server started at http://localhost:9876/
info (launcher): Starting browser ChromeCanary
info (Chrome 25.0): Connected on socket id 5YZA2fSuNXjmI-yRFGF6
Chrome 25.0 Simple should compare strings FAILED
        expect undefined toBe "foo"
        /Users/iwein/projects/epec/spa/tests/sample.js:3:9: expected "foo" but was undefined
Chrome 25.0: Executed 1 of 1 (1 FAILED) (0.195 secs / 0.018 secs)

angular-scenario.js を追加し、JASMINE-ADAPTER がそれを処理できることを願っています。

私もangular-scenario.js自分自身を含めようとしましたが、それは行き止まりです.

//inside testacular.conf.js
files = [
   JASMINE,
   JASMINE_ADAPTER,
   'tests/lib/angular/angular.js',
   'tests/sample.js'
];

出力が得られます:

$ testacular start
info: Testacular server started at http://localhost:9876/
info (launcher): Starting browser ChromeCanary
info (Chrome 24.0): Connected on socket id uEzVQ6tqSu7M7tak4F6v
Chrome 24.0 Array #indexOf() should return -1 when the value is not present FAILED
    Expected true to be false.
    Error: Expected true to be false.
        at null.<anonymous> (/..../tests/sample.js:4:17)
Chrome 24.0: Executed 1 of 1 (1 FAILED) (0.07 secs / 0.004 secs)

ミックスに angular-scenario を追加すると:

//inside testacular.conf.js
files = [
  JASMINE,
  JASMINE_ADAPTER,
  'tests/lib/angular/angular.js',
  'tests/lib/angular/angular-scenario.js',
  'tests/sample.js'
];

テストはまったく実行されません。

 $ testacular start
 info: Testacular server started at http://localhost:9876/
 info (launcher): Starting browser ChromeCanary
 info (Chrome 24.0): Connected on socket id GcyCTxuvhyFcCaE14BEP
 Chrome 24.0: Executed 0 of 0 SUCCESS (0.116 secs / 0 secs)

誰かがこれを適切に実行していますか?trueなることとは何undefinedですか?

4

2 に答える 2

16

1 つの testacular 構成で 2 つを混在させることはできません。あなたがすべきことは、2 つの別個の testacular 構成を準備することです。1 つは単体テストを実行するためのもので、もう 1 つは e2e テストを実行するためのものです。

次に、testacular を 2 回実行します。最初に単体テストを実行し、次に e2e テストを実行します。通常、私は単体テストを非常に頻繁に (保存するたびに) 実行していますが、コミットの直前に e2e テストを実行しています (これらのテストはより長く実行されるため)。e2e テストが究極のセーフティ ネットを提供し、ユニット テストでカバーするのが難しいアプリケーションの部分 (ナビゲーション、UI など) が引き続き正しく動作することを保証する一方で、ユニット テストから可能な限り迅速なフィードバックを得たいと考えています。

これは AngularJS シードが使用している手法です。対応する定義はこちらで確認できます: https://github.com/angular/angular-seed/tree/master/config

于 2012-11-01T09:02:24.650 に答える