4 votes

"Les objets d'entrée sont identiques mais pas égaux en référence" lors de la comparaison des valeurs avec strictEqual dans un test NodeJS?

J'ai un test Node.js où je vérifie que deux valeurs de type Date devraient être égales, mais le test échoue de manière inattendue avec AssertionError [ERR_ASSERTION]: Objets d'entrée identiques mais non égaux par référence.

Le code de test (simplifié) est le suivant:

it('devrait définir correctement la date', () => {
  // (Code qui obtient "myActualDate" de la page testée va ici)

  const myExpectedDate = new Date('2020-05-06');

  assert.strictEqual(myActualDate, myExpectedDate);
});

Comment dois-je modifier ce code de test pour que le test réussisse?

8voto

Jon Schneider Points 2625

Le test échoue car assert.strictEqual, selon la documentation, utilise la comparaison SameValue, qui, pour les Dates (ainsi que pour la plupart des autres types), échoue si les deux valeurs comparées ne sont pas la même référence d'objet exacte.

Alternative 1: Utilisez assert.deepStrictEqual à la place de strictEqual :

assert.deepStrictEqual(myActualDate, myExpectedDate); // Réussit si les deux valeurs représentent la même date

Alternative 2: Utilisez .getTime() avant de comparer :

assert.strictEqual(myActualDate.getTime(), myExpectedDate.getTime()); // Réussit si les deux valeurs représentent la même date

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