Jasmine a des matchers intégrés toBe
et toEqual
. Si j'ai un objet comme celui-ci:
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
et essayez de comparer new Money(200, "USD")
et le résultat de la somme, ces matchers intégrés ne fonctionneront pas comme prévu. J'ai réussi à implémenter une solution de contournement basée sur une equals
méthode personnalisée et un matcher personnalisé, mais cela semble juste beaucoup de travail.
Quelle est la manière standard de comparer des objets dans Jasmine?
==
et===
est complètement faux. Deux instances différentes d'un objet avec le même contenu renverront toutes deux false. Pour tous les non-primitifs,==
et===
se comportent de la même manière. jsfiddle.net/9mrmyrs6==
ou===
, il n'y a pas de coercition. Andreas dit que vous pouvez créer un matcher personnalisé. La dernière déclaration sur la façon de résoudre ce problème est "correcte" mais l'explication dans le premier paragraphe est tout simplement incorrecte.jasmine
vérifiera réellement le contenu de l'objet si vous utilisez à latoBe()
place deequals
a == b
donnera toujours false sia
etb
sont des instances différentes, vous voudrez peut-être modifier votre réponse