0

Я использую угловой перевод в моем шаблоне директивы, например:Использования перевести фильтр с угловым переводом в Karma/Jasmine тесты

<!-- directive template --> 
<button>{{"ers.diagramComponent.resizeOriginalButton" | translate}</button> 

Моего JSON, который отображает до этого перевода значения:

{ 
"ers.diagramComponent.resizeOriginalButton": "Original" 
} 

первоначально я получаю эту ошибку:

Error: [$injector:unpr] Unknown provider: translateFilterProvider <- translateFilter 

Я исправленный, что, добавив:

<!-- This is at the top level, runs before all tests --> 
describe("Directive", function() { 

    beforeEach(angular.mock.module("directive")); 

    var mockFilter = function (value: any) { 
     return value; 
    }; 

    beforeEach(function() { 
     angular.mock.module(function ($provide:any) { 
      $provide.value("translateFilter", mockFilter); 
     }); 
    }); 
}); 

Найденный выше здесь: How to mock angular translate filter in unit tests for directives

Я пытаюсь теперь получить, что перевести значение, чтобы соответствовать в моих тестах карма/жасмин. Мой провал тест выглядит примерно так:

var actualSizeHtml = diagramDirective.find("button").html(); 
expect(actualSizeHtml).toEqual("Original"); 

Мой провал тест:

Expected 'ers.diagramComponent.resizeOriginalButton' to equal 'Original'. 

Поэтому в основном я не могу понять, как перевести «ers.diagramComponent.resizeOriginalButton» так, что он равен «Оригинал », что и требует тест.

Вот мой конфиг для настройки $ translateProvider в компонентах, папка ресурсов держит JSON для моих пар ключ/значение:

angular.module("app",["pascalprecht.translate"]).config(["tmhDynamicLocaleProvider", function(tmhDynamicLocaleProvider) { 
    $translateProvider.useStaticFilesLoader({ 
     prefix: "resources/locale-", 
     suffix: ".json" 
    }); 

    $translateProvider.preferredLanguage("en-us"); 
    $translateProvider.useSanitizeValueStrategy("escape"); 
}]); 

Но что конфигурация не имеет ничего общего с моими тестами.

ответ

0

Кажется, что ваши тесты ничего не знают о модуле «pascalprecht.translate», который содержит переводный фильтр. Вам нужно добавить модуль "pascalprecht.translate" в зависимости к модулю "директивы" или же somethig, как это:

describe("Directive", function() { 

    beforeEach(angular.mock.module("directive", "pascalprecht.translate")); 

    var mockFilter = function (value: any) { 
     return value; 
    }; 

    beforeEach(function() { 
     angular.mock.module(function ($provide:any) { 
      $provide.value("translateFilter", mockFilter); 
     }); 
    }); 
}); 

Кроме того, вы можете написать просто

module("directive", "pascalprecht.translate") 

вместо

angular.mock.module("directive", "pascalprecht.translate") 
+0

Я получаю ту же ошибку с этим дополнением. – bschmitty

+0

У вас есть модуль с вашими переводами? Например: [link] (https://github.com/jasper-fu/life_counting_down/blob/552859aeacfd1133a729330068f193adca500e49/app/scripts/translations.js). Если у вас есть, вам нужно также ввести модуль с переводами. Было бы неплохо увидеть вашу структуру приложения, чтобы понять, в чем проблема. –

+0

Я добавил свою конфигурацию выше. Эта конфигурация отделена от моих тестов и вообще не относится к моим тестам. – bschmitty

 Смежные вопросы

  • Нет связанных вопросов^_^