要旨解決さ:が間違って
を私は私のRESTサービスのgetメソッドをスパイ:
spyOn(restService, 'get').and.callFake(function() { return deferred.promise; });
私がテストしようとしている方法はmyService.getFormDataです連鎖約束を返す():
function getFormData() { var getPromise = this.restService.get(endPoint, params, true); var processedDataPromise = then(successHandle, failHandler); return processedDataPromise; }
戻るジャスミンスペックに、私はアサーションを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ではすべてがチャームのように機能します。
'getPromise.then(...)'を意味しましたか?そして、あなたは 'successHandle'が常に期待された結果を返すことを確信していますか?また、エラーをキャッチしようとしましたか? – Bergi