4

angular-translate を使用する AngularJs アプリケーションがあり、機能をテストしたいと考えています。

次のような i18n モジュールがあります。

angular.module('i18n', ['pascalprecht.translate'])
.config(['$translateProvider', function($translateProvider) {
    'use strict';

    $translateProvider.useStaticFilesLoader({
        prefix: '/src/resources/languages/',
        suffix: '.lang.json'
    });

    $translateProvider.preferredLanguage('sv');
}]);

このモジュールには、$translate.use() を使用して現在の言語を取得および設定するサービスもあります。

これをテストしようとすると問題が発生します..私のテストファイルは次のようになります:

beforeEach(module('i18n'));
it('test', inject(function ($injector, $translate) {
    var i18nService = $injector.get('i18nService');
    console.log('$translate.use(): ', $translate.use());
    console.log('before set: ', i18nService.getLanguage());
    i18nService.setLanguage('en');
    console.log('after set: ', i18nService.getLanguage());
}));

これからの私の出力は次のとおりです。

$translate.use(): undefined
before set: undefined
after set: undefined

私が削除した場合

$translateProvider.useStaticFilesLoader({
    prefix: '/src/resources/languages/',
    suffix: '.lang.json'
});

私のモジュールから、出力は

$translate.use(): sv
before set: sv
after set: en 

これらの質問のように $httpBackend を使用してみました:

App Config で初期化された Angular Translate でコントローラーをテストするにはどうすればよいですか?

angular-translate で単体テストを行う方法

しかし、うまくいきませんでした..これらの質問のような予期しないリクエストエラーは発生しません。

誰でもこれで私を助けてもらえますか?

ありがとう!

4

0 に答える 0