Я не могу сравнить даты при тестировании компонентов в Angular - PullRequest
2 голосов
/ 07 августа 2020

Я пытаюсь протестировать компонент, у меня такой сценарий:

Мои компоненты монтируются и вызывают ngOnInit(). My ngOnInit() вызывает одну функцию, которая установлена ​​в переменной startDate one date:

ngOnInit() {
   this.getActualDate()
}

getActualDate(){
   this.startDate = new Date()
   this.startDate.setHours(0, 0, 0)
}

Я пытаюсь проверить, заполняет ли мой компонент переменную startDate Date.

Это то, что я пробовал:

fit('should compare the date', () => {
   const startDate = new Date();
   startDate.setHours(0, 0, 0);
   spyOn(component, 'getActualDate');
   component.getActualDate();
   fixture.detectChanges();
   expect(component.startDate).toEqual(startDate);
})

Когда я запускаю этот тест, я получаю эту ошибку:

Expected Date(Thu Aug 06 2020 23:59:59 GMT-0300 (Horário Padrão de Brasília)) to equal Date(Thu Aug 06 2020 00:00:00 GMT-0300 (Horário Padrão de Brasília)).

1 Ответ

1 голос
/ 07 августа 2020

Функция toEqual() использует при сравнении строгое равенство. Это означает, что объект не считается равным любому другому объекту, даже если они кажутся идентичными.

console.log(new Date() === new Date()) // false. Even if they are very similar

Вам следует сравнивать только примитивные свойства объектов, если вы хотите сравнить эквивалентность. Вы также можете вызвать toString () для объектов, поскольку строка является примитивным типом:

console.log(new Date().toString() === new Date().toString()) // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...