2017-01-13 4 views
0

多言語サポートのために、Angular 1.5.8をes6構文で使用し、angular-gettextモジュールを使用しています。 (一息経由)私はgettextCatalogを使ったangular1テスト指示文loadRemote

this.gettextCatalog.loadRemote(`assets/languages/${this.LanguageService.currentLanguage}.json`);

時計を経由して翻訳されたコンテンツをロードし、構築し、私のスイッチ言語ディレクティブが正常に動作では、すべてのものは、それがあるべきようですが、私はgulp testを実行したら、私はエラーが表示されます。

エラー:予期しない要求:私はカルマを使用するテストのためにassets/languages/[email protected]

をGET:

beforeEach(inject(($compile, $rootScope) => { 

    element = angular.element(` 
     <lang-switcher></lang-switcher> 
    `); 

    $compile(element)($rootScope.$new()); 
    $rootScope.$digest(); 
    vm = element.isolateScope().vm; 
    })); 

    it('should be compiled',() => { 
    expect(element.html()).not.toEqual(null); 
    }); 

私はgulpテストタスクを実行するたびに上記のエラーが表示されます。 switchLangディレクティブは、angle-gettextモジュールから$ http.getを使って外部データを取得しようとしているので、コンパイルプロセス中に起こると思います。どのようにこれを解決することができますか?

答えて

1

ユニットテストの際に外部からのリクエストがあった場合は、そのリクエストを嘲笑する必要があります。例えば

var $httpBackend; 
var mockJson = { }; // You can specify the mocked response for "[email protected]" if necessary 

beforeEach(inject(($compile, $rootScope, $httpBackend) => { 
    element = angular.element(` 
     <lang-switcher></lang-switcher> 
    `); 

    $compile(element)($rootScope.$new()); 
    $rootScope.$digest(); 
    vm = element.isolateScope().vm; 

    $httpBackend.when('GET', 'assets/languages/[email protected]').respond(mockJson); 
})); 
関連する問題