2017-01-13 7 views
0

Я использую Angular 1.5.8 с синтаксисом es6 и angular-gettext модуль для многоязыковой поддержки. В моей директиве переключателя языка загружает переведенный контент черезangular1 директива тестирования с gettextCatalog loadRemote

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

часы и построить (через глотку) работает нормально, все, как должно быть, но когда я бег gulp test я получаю сообщение об ошибке:

Ошибка: Неожиданный запрос: GET assets/languages/[email protected]

Для тестирования я использую карма:

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 пытается получить внешние данные с использованием $ http.get из модуля углового-gettext. Как это можно решить?

ответ

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); 
}));