2015-06-01 56 views
0

我正面臨着在我的Angular JS控制器中測試本地方法的問題。使用Jasmine測試包含服務調用的本地方法

我需要測試retrieveRuleDetails方法,它包含一個服務調用,但無法繼續。請幫忙測試一下下面的代碼:

var retrieveRuleDetails = function(feeId, ruleId) { 
    $rootScope.triggerLoading(true); 
    FeesRulesService.getRule(feeId, ruleId) 
     .then(getRuleSuccess) 
     .catch(getRuleFail); 
}; 

回答

1

我認爲最好是通過FeesRulesService作爲一個放慢參數 - 茉莉 比測試getRule間諜被調用

FeesRulesServiceMock= { 
     getRule: function(feeId,ruleId) { 

     } 
    }; 

    spyOn(FeesRulesServiceMock, 'getRule'); 

retrieveRuleDetails(feeId,ruleId,FeesRulesServiceMock) 

it("bla bla",function(){ 
expect(FeesRulesServiceMock.getRule).toHaveBeenCalled(); 
    expect(FeesRulesServiceMock.getRule).toHaveBeenCalledWith(feeId,ruleId); 

}); 
+0

那麼我怎麼能檢查然後和catch語句: then(getRuleSuccess) .catch(getRuleFail); – JayKay

+0

,因爲接下來是調用getRule的結果,你可以讓getRule返回另一個間諜,並對它做出期望,對於捕獲它將會大致相同 - 儘管我認爲TDD明智地將它分開會更好到不同的測試,因爲測試的目的是要指導你確切的問題。 –

+0

非常感謝。 – JayKay

相關問題