web-dev-qa-db-ja.com

AngularJSでのテスト:注入関数の参照エラー

以下のコードをテストしてみます。

describe('myService test', function () {
    describe('when I call myService.one', function () {
        beforeEach(angular.module('TargetMarketServices'));
        it('returns 1', inject(function (imagesRepository) {
            expect(true).toEqual(true);
        }));

    });

});

このコードを実行すると、次のエラーが発生します。

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')
    at http://localhost:8080/testacular.js:76
    at http://localhost:8080/context.html:35
ReferenceError: Can't find variable: inject
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:6
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:8
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:10

PhantomJS 1.8:3つのうち1つを実行(1つ失敗)(2つスキップ)(0.072秒/ 0.01秒)

私のテストでは、JasmineとPhantomJSでTestacularを使用します。

17
ChriX

AngularJSは、次の2つのテストライブラリを提供します。

  • angle-mocks.js
  • 角度-scenario.js

角度モックは、ジャスミンとカルマのテストに使用されます。 Jasmine仕様テストで使用されるグローバルメソッドmodule()とinject()を公開します。これは、angular-mocks.jsスクリプトをロードする必要があることを意味します(angular.jsライブラリ/スクリプトをロードした後)

角度シナリオは、e2eテストにのみ使用されます。

27
user2747330

あなたが持っているライン

beforeEach(angular.module('TargetMarketServices'));

する必要があります

beforeEach(module('TargetMarketServices'));

Test/unit/directivesSpec.jsの angular-phonecat プロジェクトを見ると、

beforeEach(module('myApp.directives'));

代わりにangular.moduleを使用するように変更した場合:

beforeEach(angular.module('myApp.directives'));

次に、testacularを実行すると、このエラーが発生します。

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')
13
Ryan O'Neill