Jasmine tem matchers toBe
e toEqual
. Se eu tiver um objeto como este:
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
e tente comparar new Money(200, "USD")
e o resultado da soma, esses matchers internos não funcionarão conforme o esperado. Consegui implementar uma solução alternativa com base em um equals
método personalizado e em um matcher personalizado, mas parece funcionar muito.
Qual é a maneira padrão de comparar objetos no Jasmine?
==
e===
está completamente errado. Duas instâncias diferentes de um objeto com o mesmo conteúdo retornarão falso. Para quaisquer não primitivos==
e===
se comportem de forma idêntica. jsfiddle.net/9mrmyrs6==
ou===
, não há coerção envolvida. Andreas está dizendo que você pode criar um matcher personalizado. A última declaração sobre como corrigir esse problema é "correta", mas a explicação no primeiro parágrafo está simplesmente incorreta.jasmine
irá verificar o conteúdo do objeto se você usar emtoBe()
vez deequals
a == b
ainda dará falso sea
eb
forem instâncias diferentes, você pode querer editar sua resposta