2016-12-14 25 views
0

要點:在茉莉花衍生的承諾得到解決不當

  1. 我窺探我的休息服務的獲取方法:

    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)確實得到解決。然而傳遞給它的'數據'是未定義的。美元消化週期與茉莉花沒有做好工作有什麼關係?

爲什麼不茉莉花任何數據傳遞到上述衍生的承諾?
進一步注意:processedDataPromise是一個全新的諾言,而不是返回的諾言。

這是processedData承諾正如我們可以看到的是由successHandle返回(未顯示清晰度)一旦其父getPromise得到解決。

在UI一切就像一個魅力。

+0

您的意思是'getPromise.then(...)'?你確定'successHandle'總是返回預期的結果嗎?另外,你是否嘗試捕捉錯誤? – Bergi

回答

0

對不起,發佈了這個問題。衍生承諾確實得到了我所指的解決數據。問題在於我錯誤地訪問了successHandle中的JSON數據。

因此,'successHandle'返回null,並且processedDataPromise返回未定義的響應。

愚蠢的錯誤,很難找到,但最好的部分是JS承諾的學習和理解。