Karma Angular注入指令将函数链接到根范围

时间:2014-03-25 11:53:12

标签: javascript angularjs karma-runner

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

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

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

    $http.flush();
}));

问题是控制器需要访问指令link块中的某些功能。是否可以在不编译完整指令的情况下将其注入范围?

1 个答案:

答案 0 :(得分:0)

正如我在您的评论中所读到的,您的Link - 函数会将您在控制器中调用的函数添加到scope。这不是一个很好的架构,因为指令控制器通常用于让几个指令相互通信,所以从LinkController,而不是相反。如果你想跟上这个并且需要那个架构,那么你应该从链接函数中调出你想要调用的函数 - 毕竟它是一个单元测试,所以你应该只测试最大气流单位,因此不需要整个指令

做一些像

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

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

   $http.flush();
}));