2016-08-03 19 views
1

これがなぜ機能しないのか理解できたら助けてくれますか?私はpromise.then関数を待つためにジャスミンのboth関数も使用しているので、アサーションを作成します。しかし、呼び出される前に時間切れになります。

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(); 
      }); 

     }); 
    }); 
}); 

then関数が呼び出されません。また、このメッセージでアウトジャスミン回:

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

答えて

1

はこのように、あなたが角度ダイジェスト・サイクルをトリガする$scope.$applyを行うことを確認してください:

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

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

問題を修正する必要があります

+0

ありがとうございました!これは問題を解決しました。 – 2achary

関連する問題