Jasmin tester une promesse.alors la fonction

J'essaie de tester mon application avec le Jasmin et ai le problème suivant:

Je vais calculer quelque chose dans le then fonction de ma promesse. C'est le point où j'ai besoin de tester mon code.

Voici le code de mon contrôleur:

  TestCtrl.$inject = ["$scope", "TestService"];
  /* ngInject */
  function TestCtrl($scope, TestService) {
    $scope.loadData = function () {
      TestService.getData().then(function (response) {
        $scope.data = response.data;
        $scope.filtered = $scope.data.filter(function(item){
          if(item.id > 1000){
            return true;
          }
          return false;
        })
      });
    }
  }

Et mon Jasmin code de test:

describe('TestService tests', function () {
  var $q;
  beforeEach(function () {
    module('pilot.fw.user');
  });
  beforeEach(inject(function (_$q_) {
    $q = _$q_;
  }));
  describe('UserController Tests', function () {

    beforeEach(inject(function (_$httpBackend_, $rootScope, $controller) {
      this.scope = $rootScope.$new();
      this.$rootscope = $rootScope;
      this.$httpBackend = _$httpBackend_;
      this.scope = $rootScope.$new();
      var TestServiceMock = {
        getData: function () {
          var deferred = $q.defer();
          var result = [{
            "id": 1720,
            "user": 1132
          },
            {
              "id": 720,
              "user": 132
            }, {
              "id": 1721,
              "user": 1132
            }];
          deferred.promise.data = result;
          deferred.resolve(result);
          return deferred.promise;
        }
      };
      this.controller = $controller('TestCtrl', {
        '$scope': this.scope,
        'TestService': TestServiceMock
      });
    }));

    it('test', function(){
      this.scope.loadData();
      expect(true).toBeTruthy();
    })
  });
});

Chose étrange, je ne comprends pas, c'est (testé avec les journaux de la console):

  • Ma promesse est créé et retourné
  • Mon loadData fonction est appelée et qu'il va appeler la fonction getData() de la TestService
  • Tout à l'intérieur de la fonction ne sera pas exécutée, bien que j'en retour la promesse comme résolu

Alors, comment pourrais-je tester le code à l'intérieur de la puis fonction?

Merci pour l'aide

InformationsquelleAutor Jonas Hans | 2016-02-16