Как я могу проверить контроллер угловой директивы?

0

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

Наверное, мне не хватает чего-то очевидного, может ли кто-нибудь это увидеть?

Вот упрощенный пример моего кода:

myDirective.js

angular.module("app").directive("myDirective", function() {
    return {
        restrict: "E",
        templateUrl: "templates/my-directive.html",
        controller: function($scope) {

            $scope.myMethod = function() {
                /**....**/
            };
        }
    };
});

myDirectiveTest.js

describe("myDirective", function() {

    var scope, element;

    beforeEach(module("app"));
    // uses karma-ng-html2js-preprocessor
    beforeEach(module("templates/my-directive.html"));

    beforeEach(inject(function ($rootScope, $compile) {
        scope = $rootScope.$new();

        element = angular.element("<my-directive></my-directive>");

        $compile(element)(scope);
        scope.$digest();
    }));

    it("should have method defined", function() {
        // this fails
        expect(scope.myMethod).toBeDefined();
    });
});

Благодарю! Я использую Jasmine & Karma

Теги:
scope
unit-testing
controller
directive

1 ответ

0

Кажется, что работает быстрый Plunker с вашим упрощенным кодом. (http://plnkr.co/edit/5kFq3kfbnrdRObapWTx6).

Я только заменил шаблон url в директиве встроенным шаблоном:

template: '<div></div>'

но это не должно иметь значения. Так что, возможно, что-то не работает, вы тестируете установку, или вы исправили свою ошибку в упрощении кода для примера.

Это может быть более квалифицированным для комментария, но не имеет репутации только для публикации комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню