带有gettextCatalog的angular1测试指令loadRemote

时间:2017-01-13 09:27:31

标签: angularjs karma-jasmine angularjs-e2e

我使用带有es6语法的Angular 1.5.8和用于多语言支持的angular-gettext模块。在我的switch-language指令中,我通过

加载翻译的内容

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

观察和构建(通过gulp)工作正常,一切都应该如此,但是一旦我运行gulp test我收到错误:

错误:意外请求:GET assets/languages/sr_RS@cyrillic.json

为了测试我使用业力:

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指令试图使用angular-gettext模块中的$ http.get来获取外部数据。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要模拟单元测试时发出的任何外部请求。 e.g。

var $httpBackend;
var mockJson = { }; // You can specify the mocked response for "sr_RS@cyrillic.json" 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/sr_RS@cyrillic.json').respond(mockJson);
}));