How do unit test with angular-translate

后端 未结 11 1996
死守一世寂寞
死守一世寂寞 2020-12-08 09:38

I have uses angular translate from here (http://pascalprecht.github.io/angular-translate/) and it\'s just work fine, but it break my controller\'s unit test whith Error:

11条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-08 10:18

    I use this pattern.

    • ApplicationModule set regular angular-translate config.
    • test code load 'testModule' instead of 'applicationModule'

    // application module .js 
    (function() {
      'use strict'; 
      
      angular
       .module('applicationModule', [
        'ngAnimate',
        'ngResource',
        'ui.router',
        'pascalprecht.translate'
      ])
      .config(['$stateProvider', '$urlRouterProvider', '$translateProvider', '$translatePartialLoaderProvider', config]);
    
      function config($stateProvider, $urlRouterProvider, $translateProvider, $translatePartialLoaderProvider) {
        // set routing ... 
            
        $translateProvider.useStaticFilesLoader({
          prefix: 'i18n/locale-',
          suffix: '.json'
        });
    
        $translateProvider.useMessageFormatInterpolation();
        $translateProvider.fallbackLanguage(['en']);
        $translateProvider
        .registerAvailableLanguageKeys(['en', 'ko'], {
          'en_US': 'en',
          'ko_KR': 'ko'
        })
        .determinePreferredLanguage(navigator.browserLanguage);
    
                
        $translateProvider.addInterpolation('$translateMessageFormatInterpolation');    
        $translateProvider.useSanitizeValueStrategy('escaped');
      }
    
    })();

    // test.module.js
    (function() {
      'use strict';
    
      angular
        .module('testModule', ['applicationModule'])
        .config(['$translateProvider', '$translatePartialLoaderProvider', config])
        .run(['$httpBackend', run]);
    
      function config($translateProvider, $translatePartialLoaderProvider) {
        $translateProvider.useLoader('$translatePartialLoader', {
            urlTemplate: 'i18n/locale-en.json'
        });
        $translatePartialLoaderProvider.addPart('applicationModule');
      }
    
      function run($httpBackend) {
        $httpBackend.when('GET', 'i18n/locale-en.json').respond(200);
      }
    
    })();
    
    
    // someDirective.spec.js
    describe("a3Dashboard", function() {
        beforeEach(module("testModule"))
    
        var element, $scope;
        beforeEach(inject(function($compile, $rootScope) {
            $scope = $rootScope;
            element = angular.element("
    {{2 + 2}}
    "); $compile(element)($rootScope) })) it('should equal 4', function() { $scope.$digest(); expect(element.html()).toBe("4"); }) })

提交回复
热议问题