Jasmine hat eingebaute Matcher toBe
und toEqual
. Wenn ich ein Objekt wie dieses habe:
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
und versuchen Sie zu vergleichen new Money(200, "USD")
und das Ergebnis der Summe, diese eingebauten Matcher werden nicht wie erwartet funktionieren. Ich habe es geschafft, eine Problemumgehung basierend auf einer benutzerdefinierten equals
Methode und einem benutzerdefinierten Matcher zu implementieren , aber es scheint einfach zu viel Arbeit zu sein.
Was ist die Standardmethode zum Vergleichen von Objekten in Jasmine?
==
und===
völlig falsch ist. Zwei verschiedene Instanzen eines Objekts mit demselben Inhalt geben beide false zurück. Für alle Nicht-Primitiven==
und===
verhalten sich identisch. jsfiddle.net/9mrmyrs6==
oder verwenden===
, es gibt keinen Zwang. Andreas sagt, dass Sie einen benutzerdefinierten Matcher erstellen können. Die letzte Aussage zur Behebung dieses Problems ist "richtig", aber die Erklärung im ersten Absatz ist einfach falsch.jasmine
wird tatsächlich den Objektinhalt überprüfen, wenn SietoBe()
anstelle vonequals
a == b
wird immer noch falsch geben, wenna
undb
sind verschiedene Instanzen, möchten Sie vielleicht Ihre Antwort bearbeiten