2013-04-10 28 views
5

Tôi muốn kiểm tra đơn vị chức năng của tôi mà về cơ bản xây dựng một loạt các quan sát từ một loạt các thông số (mã nguyên cảo):Kiểm tra xem phần mở rộng đã được áp dụng để quan sát

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; 
    } 

thử cái nhìn của tôi như thế này:

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); 

Trong trường hợp thông số đầu tiên trong đó isRequired được đặt thành true, cách kiểm tra xem tiện ích (xác thực) đã được áp dụng ("Đính kèm xác thực" một phần trong BuildObservables)?

Edit:

Trong chức năng khác mà tôi đang gắn thuê bao và tôi không biết làm thế nào để kiểm tra xem họ đã gắn liền một cách chính xác.

Trả lời

1
Tôi không biết nhiều về plugin xác thực cho trường hợp cụ thể của bạn, nhưng trong các thuật ngữ tổng quát hơn, tôi nghi ngờ có thể tìm hiểu xem liệu có thể quan sát được hay không, vì cơ chế mở rộng rất chung chung và không áp đặt hoạt động cụ thể được thực hiện trên "mở rộng" có thể quan sát được, để lại tất cả các chi tiết của hoạt động với chính extender (vì vậy kết quả có thể khác nhau, từ bao gói quan sát được, đăng ký với nó, thậm chí đơn giản là đăng ký quan sát được trong dịch vụ bên ngoài hoặc bất cứ điều gì ở giữa).

Nếu vấn đề của bạn là cho mục đích thử nghiệm đơn vị chỉ, bạn có thể xem xét chế độ mở rộng để lưu trữ các đối số được truyền cho nó (tức là bộ mở rộng) trên quan sát được gọi - theo cách này bạn có thể sau kiểm tra sự hiện diện của các bộ mở rộng đã nói.

Để có điều gì đó phức tạp hơn, thư viện kiểm tra jasmine cung cấp thêm tùy chọn cho mô hình, bao gồm các kiểm tra để kiểm tra xem một hàm cụ thể có được gọi không và một số đối số cụ thể đã được chuyển cho nó.

3

Bạn có thể gọi rules() trên thiết bị quan sát của mình, nó sẽ cung cấp cho bạn một mảng.

observables[parameterName].rules(); 
Các vấn đề liên quan