2016-12-14 18 views
0

要旨解決さ:が間違って

  1. を私は私のRESTサービスのgetメソッドをスパイ:

    spyOn(restService, 'get').and.callFake(function() { 
         return deferred.promise; 
    }); 
    
  2. 私がテストしようとしている方法はmyService.getFormDataです連鎖約束を返す():

    function getFormData() { 
         var getPromise = this.restService.get(endPoint, params, true); 
         var processedDataPromise = then(successHandle, failHandler); 
         return processedDataPromise; 
    } 
    
  3. 戻るジャスミンスペックに、私はアサーションをgetFormData関数を呼び出して、作る:問題

    var processedDataPromise = myService.getFormData(); 
    processedDataPromise.then(function(data) { 
        expect(data).not.toBeNull(); 
    }); 
    deferred.resolve(testFormData); 
    $rootScope.$digest(); 
    


ザ・デリバティブの約束(processedDataPromise)の上に実際に解決しますありません。しかし、渡された 'データ'は未定義です。それはジャスミンで仕事をしていない$ダイジェストサイクルと関係がありますか?

なぜJasmineは上記の派生した約束にデータを渡さないのですか?
詳細注:processedDataPromiseはget返された約束よりも全く新しい約束です。

これは、親getPromiseが解決されると、わかるように、successHandle(定義は表示されません)によって返されます。

UIではすべてがチャームのように機能します。

+0

'getPromise.then(...)'を意味しましたか?そして、あなたは 'successHandle'が常に期待された結果を返すことを確信していますか?また、エラーをキャッチしようとしましたか? – Bergi

答えて

0

申し訳ありません質問を投稿してください。デリバティブの約束は、私が言及した解決済みのデータを実際に得ました。問題は、successHandle内のJSONデータに誤ってアクセスしていたことです。

結果、 'successHandle'はnullを返し、processedDataPromiseは未定義応答を返しました。

愚かな間違いは、見つけるのは大変ですが、最も重要なのは、JS約束の学習と理解です。

関連する問題