98 votes

Vérifier l'égalité des objets dans Jasmine

Jasmine a des comparateurs intégrés toBe y 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 essayer de comparer new Money(200, "USD") et le résultat de la somme, ces comparateurs intégrés ne fonctionneront pas comme prévu. J'ai réussi à mettre en place une solution de contournement basée sur une fonction personnalisée de equals método et des matrices personnalisées, mais cela semble représenter trop de travail.

Quelle est la manière standard de comparer des objets dans Jasmine ?

-5voto

Baer Points 913

Votre problème est avec la véracité. Vous essayez de comparer deux instances différentes d'un objet, ce qui est vrai pour une égalité normale ( a == b ) mais pas pour une égalité stricte ( a === b ). Le comparateur utilisé par Jasmine est jasmine.Env.equals_() qui recherche une égalité stricte.

Pour accomplir ce dont vous avez besoin sans modifier votre code, vous pouvez utiliser l'égalité régulière en vérifiant la véracité avec quelque chose comme ce qui suit :

expect(money1.sum() == money2.sum()).toBeTruthy();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X