2013-04-10 57 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(); 
相关问题