2016-08-03 7 views
1

Kann mir jemand helfen zu verstehen, warum das nicht funktioniert? Ich benutze Jasmins both Funktion, um auf das Versprechen zu warten. Dann Funktion auch aufgerufen werden und eine Behauptung machen. Aber es läuft ab, bevor es aufgerufen wird.

describe('greeting', function(){ 
    var greeting = 'hello'; 

    it('should call promise.then', function(done) { 
     inject(function ($q) { 
      var deferred = $q.defer(); 
      deferred.resolve(greeting); 

      deferred.promise.then(function (greeting) { 
       expect(greeting).toEqual('hello'); 
       done(); 
      }); 

     }); 
    }); 
}); 

Die then Funktion nicht mit dieser Meldung genannt und Jasmin mal heraus bekommt:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

Antwort

1

Vergewissern Sie sich ein $scope.$apply tun, um die Winkel verdauen Zyklus auszulösen, wie folgt aus:

inject(function ($q, $rootScope) { 
    var deferred = $q.defer(); 
    deferred.resolve(greeting); 

    deferred.promise.then(function (greeting) { 
     expect(greeting).toEqual('hello'); 
     done(); 
    }); 
    $rootScope.$apply(); 
}); 

Sollte das Problem beheben

+0

Vielen Dank! Dies hat das Problem gelöst. – 2achary

Verwandte Themen