Модульное тестирование ngComponentRouter - Angular 1.5.x

Я пытаюсь создать базовые модульные тесты для Angular 1.5 с целью A) отработки модульного тестирования и B) ознакомления с компонентно-ориентированной разработкой в ​​Angular 1.5.x. Я пытаюсь выполнить модульное тестирование простого компонента, но получаю следующее сообщение:

Ошибка: [$injector:modulerr] Не удалось создать экземпляр приложения модуля из-за:

Ошибка: [$injector:modulerr] Не удалось создать экземпляр модуля ngComponentRouter из-за:

Ошибка: [$ инжектор: номод] Модуль 'ngComponentRouter' недоступен! Вы либо неправильно написали имя модуля, либо забыли загрузить его. При регистрации модуля убедитесь, что вы указали зависимости в качестве второго аргумента.

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

app.js

(function(){
    "use strict";

    const app = angular.module("app", ["ngComponentRouter"])

    app.value("$routerRootComponent", "componentApp");
})();

Компонент-app.component.js

(function(){
    "use strict";

    angular.module("app").component("componentApp", {
        templateUrl: "/javascripts/component-app.component.html",
        controller: ["$router", function($router){
            $router.config([
                { path: "/users", component: "usersComponent", name: "Users" },
                { path: "/**", redirectTo: ["Users"]}
            ]);
        }]

    });
})();

Компонент-app.component.spec.js

describe("componentApp component", function(){
    beforeEach(module("app"));

    var $componentController, componentApp;

    beforeEach(inject(function($injector){
        $componentController = $injector.get("$componentController");
        componentApp = $componentController("componentApp", { $scope: {}});
    }));

    it("componentApp component is defined", function(){
        expect(componentApp).toBeDefined();
    }); 
});

1 ответ

Решение

Таким образом, два изменения сделали свое дело, сначала мне нужно изменить component-app.component.js:

angular.module("app").component("componentApp", {
    templateUrl: "/templates/component-app.component.html",
    $routeConfig: [
        { path: "/Users", name: "Users", component: "usersComponent" },
        { path: "/Home", name: "Home", component: "homeComponent"},
        { path: "/Profile/:id", name: "Profile", component: "profileComponent" },
        { path: "/**", redirectTo: ["Users"]}
    ]
});

И мне нужно было включить файл в karma.conf.js:

module.exports = function(config) {
  config.set({

    basePath: "",
    frameworks: ["jasmine"],
    files: [
        "bower_components/angular/angular.js",       
        "bower_components/angular-mocks/angular-mocks.js",
        "bower_components/angular-component-router/angular_1_router.js",
        "javascripts/**/*.js"
    ],
    exclude: [        
    ],
    preprocessors: {
    },
    reporters: ["progress"],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ["Chrome"],
    singleRun: false,
    concurrency: Infinity
  });
};
Другие вопросы по тегам