Jasmine ma wbudowane dopasowujące toBe
i toEqual
. Jeśli mam taki obiekt:
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
i spróbuj porównać, new Money(200, "USD")
a wynik sumy, te wbudowane dopasowania nie będą działać zgodnie z oczekiwaniami. Udało mi się zaimplementować obejście oparte na niestandardowej equals
metodzie i niestandardowym dopasowywaniu, ale wydaje się, że wymaga to dużo pracy.
Jaki jest standardowy sposób porównywania obiektów w Jasmine?
==
i===
jest całkowicie błędne. Dwa różne wystąpienia obiektu o tej samej zawartości zwrócą wartość false. Dla wszystkich nieprymitywów==
i===
zachowują się identycznie. jsfiddle.net/9mrmyrs6==
też===
nie ma przymusu. Andreas mówi, że możesz stworzyć niestandardowy dopasowywanie. Ostatnie stwierdzenie, jak rozwiązać ten problem, jest „poprawne”, ale wyjaśnienie w pierwszym akapicie jest po prostu niepoprawne.jasmine
faktycznie sprawdzi zawartość obiektu, jeśli użyjesztoBe()
zamiastequals
a == b
nadal będzie podawać wartość fałsz, jeślia
ib
istnieją różne instancje, możesz zmienić swoją odpowiedź