2013-04-10 56 views
5

我想單元測試我的功能基本上建立觀測陣列從一個數組的參數(打字稿代碼):檢查擴展應用到可觀察

private BuildObservables(parameters: Parameter[]) { 
     var observables = {}; 

     for (var parameterName in parameters) { 

      var p = parameters[parameterName]; 

      // Build observable 
      observables[parameterName] = ko.observable(p.Value); 

      // Attach validation 
      if (p.IsRequired) { 
       observables[parameterName].extend({ required: true }); 
      } 
     } 
     return observables; 
    } 

我的測試是這樣的:

var parameters = []; 

// new Parameter(int value, bool isRequired) 
parameters["Param1"] = new Parameter("123", true); 
parameters["Param2"] = new Parameter("456", false); 

var viewModel = BuildObservables(parameters); 

ok(viewModel["Param1"] != null); 
ok(viewModel["Param2"] != null); 

如果第一個參數isRequired設置爲true,如何檢查是否應用了擴展(驗證)(Build Attachment中的「附加驗證」部分)?

編輯:

中其他功能我安裝的用戶,我不知道如何測試,如果他們被正確安裝。

回答

1

我對你的特定情況下的驗證插件瞭解不多,但更籠統地說,我懷疑是否有可能確定observable是否已被擴展,因爲擴展機制非常普遍,並且不會強加具體操作將在「擴展」的可觀察對象上執行,將操作的所有細節留給擴展器本身(因此結果可能差別很大,從包裝可觀察對象,訂閱對象,甚至僅將觀察對象註冊到外部服務或之間的任何東西)。

如果你的問題是單元測試的目的只有,你可能會考慮嘲諷,使其存儲傳遞給它(即擴展)上觀察到的觀點是呼籲擴展功能 - 這樣你就可以在以後檢查所述擴展器的存在。

有關更詳細的內容,測試庫jasmine爲模型提供了更多選項,其中包括測試以檢查是否調用了某個特定函數以及是否傳遞了某些特定參數,因此您也可以查看它們。

3

你可以在你的observable上調用rules(),它應該給你一個數組。

observables[parameterName].rules(); 
相關問題