2013-02-20 39 views
0

驗證機制的JsMockito不適合我。我的設置是我有2個類,通用和建議。JsMockito驗證機制不起作用

MyNS.Common = function() {}; 
MyNS.Suggestions = function() {}; 

我在建議中設置了Common的一個實例。

MyNS.Suggestions.prototype.setCommon = function(common) {this.common = common;}; 

然後我使用Common.getAdGroupId()的返回值並使用此值調用Suggestions.refresh()。這就是我想要測試的。

MyNS.Suggestions.prototype.init = function() { 
    // This is mocked to return 56 as can be seen in the test above. 
    var adGroupId = this.common.getAdGroupId(); 
    this.refresh(adGroupId); 
}; 

整個工作示例在小提琴上:http://jsfiddle.net/sbel/kqdTV/2/。請指教。

回答

0

這裏有幾個錯誤。

  1. 你嘲笑你的系統在測試。你正在測試MyNS.Suggestions,對嗎?因爲它是一個模擬,所以「init()」方法是一個空的存根。您需要使用MyNS.Suggestions對象的實例。
  2. 你打電話給「mockedSuggestions.setCommon(mockedCommon)」。因爲「setCommon」是一個嘲弄的方法,它什麼都不會做。如果你想引用一個模擬對象的值,你需要做一些創建getter方法(「getCommon」),然後做「當(mockedSuggestions).getCommon()。然後返回(mockedCommon);」。當然,這是無關緊要的,因爲建議對象首先不應該是模擬的。

希望這會有所幫助!