2013-04-10 11 views
5

chcę jednostki przetestować funkcję, która w zasadzie buduje tablicę obserwabli z tablicą parametrów (kod maszynopis):Sprawdź, czy rozszerzenie zostało zastosowane do zaobserwowania

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

Moje testy wyglądać następująco:

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

w przypadku pierwszego parametru gdzie isRequired został ustawiony na true, jak sprawdzić, czy rozszerzenie (walidacja) zastosowano („Dołącz walidacji” część w BuildObservables)?

EDIT:

W innej funkcji mam mocowania abonentów i nie wiem, jak sprawdzić, czy zostały one prawidłowo zamocowane.

Odpowiedz

1

Nie wiem zbyt wiele na temat wtyczki do walidacji dla konkretnego przypadku, ale w bardziej ogólnym ujęciu wątpię, czy możliwe jest sprawdzenie, czy obserwowalne zostało przedłużone, ponieważ mechanizm rozszerzenia jest bardzo ogólny i nie narzuca specyficzna operacja do wykonania na "rozszerzonym" obserwowalnym, pozostawiająca wszystkie detale operacji samemu wzmacniaczowi (tak, że wynik może się znacznie różnić, począwszy od zawijania obserwowalnego, subskrypcji do niego, nawet po prostu zarejestrowaniu obserwowalnego w usłudze zewnętrznej lub coś pomiędzy).

Jeśli Twój problem dotyczy tylko testów jednostkowych tylko, możesz rozważyć wyśmiewanie funkcji rozszerzania tak, aby przechowywało przekazane do niej argumenty (tj. Przedłużacze) w obserwowalnym obiekcie, do którego jest wywoływane - w ten sposób możesz później sprawdź obecność wymienionych przedłużaczy.

Na coś bardziej skomplikowanego, biblioteka Test jasmine oferują więcej możliwości makietach, w tym testy, aby sprawdzić, czy dana funkcja została wywołana, a jeśli jakieś konkretne argumenty zostały przekazane do niego, więc może być interesujące, aby spojrzeć na to zbyt.

3

Możesz zadzwonić pod numer rules() na swoje obserwowalne, to powinno dać ci tablicę.

observables[parameterName].rules(); 
Powiązane problemy