У меня есть директива, которая использует службы:директивы испытания AngularJS, которые непосредственно потребляющие услуги
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()