Właśnie zacząłem używać Jasmine, więc proszę wybaczyć pytanie początkującego, ale czy możliwe jest testowanie typów obiektów podczas korzystania z toHaveBeenCalledWith
?Używanie typów obiektów z Jasmine do HaveBeenCalledWith method
expect(object.method).toHaveBeenCalledWith(instanceof String);
Wiem, że mogłem to, ale sprawdzam wartość zwracaną zamiast argumentu.
expect(k instanceof namespace.Klass).toBeTruthy();
Andreas, jest jakiś powód, dla którego dodaje '.toBeTruthy()'? Wygląda na to, że nie jest to konieczne. – gwg
@ gwg "oczekiwać (foo)' bez matchera jest no-op; linia nie zrobiłaby nic bez wywołania 'toBeTruthy()'. Zobacz dowód: http://jsfiddle.net/2doafezv/2/. –
To jest nieaktualne; 'obj.method.mostRecentCall' musi stać się [' obj.method.calls.mostRecent() '] (http://jasmine.github.io/2.0/introduction.html#section-Inne_tracking_properties) w Jasmine 2.0. Również użycie 'jasmine.any()', jak opisano w innej odpowiedzi, jest jaśniejsze i bardziej przejrzyste. Wreszcie, ta odpowiedź zajmuje trochę czasu, aby dojść do sedna; zasadniczo wszystko, co napisałeś poza 'expected (obj.method.mostRecentCall.args [0] instanceof String) .toBeTruthy();' tak naprawdę nie jest potrzebne do wytłumaczenia siebie. –