«Входные объекты идентичны, но не равны по ссылкам» при сравнении значений с strictEqual в тесте NodeJS? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть тест Node.js, в котором я утверждаю, что два значения типа Date должны быть равны, но тест неожиданно завершается неудачно с AssertionError [ERR_ASSERTION]: Input objects identical but not reference equal.

(упрощенный) тестовый код:

it('should set the date correctly', () => {
  // (Code that gets "myActualDate" from the page under test goes here)

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

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

Как мне изменить этот тестовый код, чтобы тест прошел?

1 Ответ

2 голосов
/ 06 мая 2020

Тест не проходит, потому что assert.strictEqual , согласно документации, использует сравнение SameValue , которое для дат (а также для большинства других типов) не выполняется, если два сравниваемых значения не являются одной и той же ссылкой на объект.

Альтернатива 1: Используйте assert.deepStrictEqual вместо strictEqual:

assert.deepStrictEqual(myActualDate, myExpectedDate); // Passes if the two values represent the same date

Альтернатива 2: Используйте .getTime () перед сравнением :

assert.strictEqual(myActualDate.getTime(), myExpectedDate.getTime()); // Passes if the two values represent the same date
...