このようなディレクティブがあれば
JS:
app.controller('MyController', function($scope) {
this.someMethod = function() {
};
});
app.directive('myDirective', function() {
return {
scope: true
link: function(scope, elem, attrs, controller) {
controller.someMethod();
}
controller: 'MyController',
}
});
Jasmine スパイを作成して、リンク関数が呼び出されるようにしたいのですcontroller.someMethod
が、これは機能しません。
仕様:
var elem = angular.element('<div my-directive></div>');
var scope = $rootScope.new();
$compile(elem)(scope);
var ctrl = elem.controller('myDirective');
spyOn(ctrl, 'someFunc').andCallThrough();
$compile
コントローラーがインスタンス化され、リンク関数がステートメントで呼び出されたため、スパイの作成が遅すぎます。
リンク関数で発生したことをスパイする他の方法はありますか? コントローラーを事前にインスタンス化してに渡すことは可能$compile
ですか?