2016-04-06 21 views
0

Örnek testi numara geciktirilmiş söz çözmek:Vaat ettiğiniz gibi ve karma/açısal bir gecikme ile nasıl bir gecikme simülasyonu yapabilirim?

describe('Example', function() { 
    var $q; 
    var $rootScope; 
    var $scope; 
    var $timeout; 
    var fakePromise; 

    beforeEach(inject(function (_$q_, _$rootScope_, _$timeout_) { 
    $q = _$q_; 
    $rootScope = _$rootScope_; 
    $timeout = _$timeout_; 
    $scope = $rootScope.$new(); 

    fakePromise = function(){ 
     return new Promise(function(resolve, reject){ 
     $timeout(function(){ 
      resolve('foo'); 
     }, 100); 
     }); 
    }; 
    })); 

    afterEach(function() { 
    $scope.$apply(); 
    }); 

    it('should wait for promise to resolve and have a result', function(){ 
    return fakePromise().should.eventually.equal('foo'); //taken from chai-as-promised readme 
    }); 

}); Ben olsun

return doSomethingAsync().should.eventually.equal("foo"); 

hatadır:

Chrome 49.0.2623 (Mac OS X 10.11.4) Example should wait for promise to resolve and have a result FAILED 
    Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. 
+0

Bu nasıl? tetikle "done()" geri bildirimi ile .notify (done); ' –

cevap

0

$timeout Hizmet zaten bir söz verir

beni oku yapmak söylüyor. Bir tane üretmeye gerek yok. Bu örnekte

fakePromise = $timeout(function() {return "foo"}, 100); 

, fakePromise 100 milisaniye sonra "foo" olarak çözümlenir bir söz olarak ayarlanır.