AngularJS-Direktive link-Funktion nicht aufgerufen, Jasmin test

Ich bin momentan dabei, ein element der Richtlinie, die fordert, einen Dienst in seiner link Funktion:

app.directive('depositList', ['depositService', function (depositService) {
    return {
        templateUrl: 'depositList.html',
        restrict: 'E',
        scope: {
            status: '@status',
            title: '@title'
        },
        link: function (scope) {
            scope.depositsInfo = depositService.getDeposits({
                status: scope.status
            });
        }
    };
}]);

Der service ist trivial für jetzt:

app.factory('depositService', function(){
  return {
    getDeposits: function(criteria){
      return 'you searched for : ' + criteria.status;
    }
  };
});

Ich versuche, einen test schreiben, der sicherstellt, dass die depositService.getDeposits() heißt mit dem richtigen status Wert.

describe('Testing the directive', function() {
  beforeEach(module('plunker'));
  it('should query for pending deposits', inject(function ($rootScope, $compile, $httpBackend, depositService) {

      spyOn(depositService, 'getDeposits').and.callFake(function(criteria){ 
        return 'blah'; 
      });

      $httpBackend.when('GET', 'depositList.html')
          .respond('<div></div>');

      var elementString = '<deposit-list status="pending" title="blah"></deposit-list>';
      var element = angular.element(elementString);
      var scope = $rootScope.$new();
      $compile(element)(scope);
      scope.$digest();

      var times = depositService.getDeposits.calls.all().length;
      expect(times).toBe(1);
  }));
});

Schlägt der test fehl, da sich die Zeiten === 0. Dieser code läuft einwandfrei im browser, aber im test der link Funktion und der service scheinen nie zu nennen. Irgendwelche Gedanken?

plunker: http://plnkr.co/edit/69jK8c

InformationsquelleAutor kindohm | 2014-06-24
Schreibe einen Kommentar