您好我正在测试一个名为controller的指令,如下所示:
beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {
$scope = $rootScope.$new();
$http = _$httpBackend_;
$controller('coreAppController', {$scope : $scope});
$http.flush();
}));
问题是控制器需要访问指令link
块中的某些功能。是否可以在不编译完整指令的情况下将其注入范围?
答案 0 :(得分:0)
正如我在您的评论中所读到的,您的Link
- 函数会将您在控制器中调用的函数添加到scope
。这不是一个很好的架构,因为指令控制器通常用于让几个指令相互通信,所以从Link
到Controller
,而不是相反。如果你想跟上这个并且需要那个架构,那么你应该从链接函数中调出你想要调用的函数 - 毕竟它是一个单元测试,所以你应该只测试最大气流单位,因此不需要整个指令
做一些像
这样的事情beforeEach(inject(function ($rootScope, $controller, _$httpBackend_) {
$scope = $rootScope.$new();
$scope.MYSCOPEFUNCTION = jasmine.createSpy('MyFunctionMock');
$http = _$httpBackend_;
$controller('coreAppController', {$scope : $scope});
$http.flush();
}));