在Karma / Jasmine测试中使用带有角度平移的平移滤波器

时间:2017-01-31 20:28:40

标签: javascript jquery angularjs karma-jasmine angular-translate

我在自定义指令模板中使用angular-translate,例如:

htmlAttributes

我的json映射到此翻译值:

@Html.DropDownList("RoleList", null, new { @class = "form-control" })

我最初收到此错误:

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

我通过添加:

更正了这一点
{
 "ers.diagramComponent.resizeOriginalButton": "Original"
}

在此处找到上述内容:How to mock angular translate filter in unit tests for directives

我现在尝试将该翻译值与我的业力/茉莉花测试相匹配。我失败的测试看起来像这样:

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

所以基本上我无法弄清楚如何翻译“ers.diagramComponent.resizeOriginalButton”,以便它等于“原始”,这是测试所寻求的。

这是我在组件中设置$ translateProvider的配置,resources文件夹包含我的键/值对的json:

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

但是这种配置与我的测试无关。

1 个答案:

答案 0 :(得分:0)

您的测试似乎一无所知&#34; pascalprecht.translate&#34;模块,包含翻译过滤器。你需要添加&#34; pascalprecht.translate&#34;模块依赖于&#34;指令&#34;模块或做这样的事情:

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")