Javascript Karma将函数链接到根范围

Javascript Karma将函数链接到根范围,javascript,angularjs,karma-runner,Javascript,Angularjs,Karma Runner,您好,我正在测试名为controller的指令,如下所示: beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) { $scope = $rootScope.$new(); $http = _$httpBackend_; $controller('coreAppController', {$scope : $scope}); $http.flush(); })); 问题是控制

您好,我正在测试名为controller的指令,如下所示:

beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {
    $scope = $rootScope.$new();
    $http = _$httpBackend_;

    $controller('coreAppController', {$scope : $scope});

    $http.flush();
}));

问题是控制器需要访问指令链接块中的某些函数。是否可以在不编译完整指令的情况下将其注入作用域?

正如我在您的评论中所读到的,您的链接函数将您在控制器内调用的函数添加到作用域中。这不是一个很好的体系结构,因为指令控制器通常用于让多个指令相互通信,所以从链接到控制器,而不是相反。如果你想跟上这一点并且需要这个架构,你可能应该模拟你想从link函数调用的函数——毕竟,这是一个单元测试,所以你应该只测试大多数atmoic单元,因此不需要整个指令

做点像

beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {
   $scope = $rootScope.$new();
   $scope.MYSCOPEFUNCTION = jasmine.createSpy('MyFunctionMock');
   $http = _$httpBackend_;

   $controller('coreAppController', {$scope : $scope});

   $http.flush();
}));

请同时发布您的指令实施。这取决于您如何调用指令的link函数。它是在指令link:Function$scope{}中声明的。是的,这很清楚,因为没有其他方法。我说的是你在控制器中调用的那些函数。我需要看他们来帮助你。因此,也许只需将该指令的全部代码添加到您的帖子中,它们只是在连接到作用域的链接函数中声明的函数:$scope.open=function{};然后在控制器$scope.open中执行。