Jasmine tiene emparejadores incorporados toBe
y toEqual
. Si tengo un objeto como este:
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
e intente comparar new Money(200, "USD")
y el resultado de la suma, estos comparadores integrados no funcionarán como se esperaba. Me las arreglé para implementar una solución alternativa basada en un equals
método personalizado y un comparador personalizado, pero parece que funciona mucho.
¿Cuál es la forma estándar de comparar objetos en Jasmine?
==
y===
está completamente equivocado. Dos instancias diferentes de un objeto con el mismo contenido devolverán falso. Para cualquier no primitivo==
y se===
comporta de manera idéntica. jsfiddle.net/9mrmyrs6==
o===
, no hay coerción involucrada. Andreas dice que puedes crear un comparador personalizado. La última declaración sobre cómo solucionar este problema es "correcta", pero la explicación en el primer párrafo es simplemente incorrecta.jasmine
comprobará el contenido del objeto si lo usa entoBe()
lugar deequals
a == b
seguirá dando falso sia
yb
son instancias diferentes, es posible que desee editar su respuesta