我有一个使用服务的指令:
MyDirective = (myService) ->
compile: () ->
stuff = myService.getStuff()
MyDirective.$inject = ['MyService']
app = A.module 'myApp'
app.directive 'myDirective', MyDirective
我希望能够测试 myService.getStuff 是否被调用。
对于我的控制器测试,我已经能够做到:
angular.mock.inject ($controller) ->
myController = $controller 'MyController',
$scope: $scope
mockMe: mockMethod: () ->
assert.ok()
done()
如果我对指令执行类似操作,则会收到以下错误:
angular.mock.inject ($directive) ->
myDirective = $directive 'MyDirective',
$scope: $scope
myService: getStuff: () ->
assert.ok()
done()
Error: Unknown provider: $directiveProvider <- $directive
有什么想法可以获取对指令的引用并将模拟注入其中吗?
在我做所有测试之前:
angular.mock.module 'myApp'
我已经能够通过指令 -> 控制器 -> 服务而不是指令 -> 服务来解决这个问题。这是推荐的解决方案吗?例如
$scope.getStuff = (name, success) ->
assert.ok true
done()
$_compile(elm) $scope
$scope.$digest()