У меня возникла проблема с тестированием контроллера моей директивы. Повсюду я ищу, похоже, то же самое, что и я, но когда я пытаюсь вызвать методы в своей области, они, похоже, не существуют.
Наверное, мне не хватает чего-то очевидного, может ли кто-нибудь это увидеть?
Вот упрощенный пример моего кода:
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
Кажется, что работает быстрый Plunker с вашим упрощенным кодом. (http://plnkr.co/edit/5kFq3kfbnrdRObapWTx6).
Я только заменил шаблон url в директиве встроенным шаблоном:
template: '<div></div>'
но это не должно иметь значения. Так что, возможно, что-то не работает, вы тестируете установку, или вы исправили свою ошибку в упрощении кода для примера.
Это может быть более квалифицированным для комментария, но не имеет репутации только для публикации комментария