Testing AngularJS directives that directly consume services -


i have directive makes use of service:

  mydirective = (myservice) ->      compile: () ->       stuff = myservice.getstuff()    mydirective.$inject = ['myservice']    app = a.module 'myapp'   app.directive 'mydirective', mydirective 

i want able test myservice.getstuff called.

for tests controllers, have been able do:

angular.mock.inject ($controller) ->   mycontroller = $controller 'mycontroller',     $scope: $scope     mockme: mockmethod: () ->       assert.ok()       done() 

if similar directive, following error:

angular.mock.inject ($directive) ->   mydirective = $directive 'mydirective',     $scope: $scope     myservice: getstuff: () ->       assert.ok()       done()  error: unknown provider: $directiveprovider <- $directive 

any ideas how can reference directive , inject mocks in it?

before tests doing:

angular.mock.module 'myapp' 

i have been able solve going directive -> controller -> service rather directive -> service. recommended solution? e.g

$scope.getstuff = (name, success) ->   assert.ok true   done()  $_compile(elm) $scope $scope.$digest() 

is you're talking about?

var scope, element;  angular.mock.inject(function ($compile, $rootscope) {     scope = $rootscope;     element = $compile('<my-directive />')(scope);     scope.$digest(); }); 

from here can make changes scope, call $digest() again see changes reflected in element. if mydirective relies on service myservice via injection you'd mock, need before call inject():

module('modulewithdirective', function ($provide) {     $provide.provider('myservice', {         $get: function () {             return { /* service goes here. */ };         }     }); }); 

Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -