我无法在 Angular 的组件测试中比较日期

I can't compare dates in my component testing in Angular

我正在尝试测试一个组件,我遇到了这种情况:

我的组件挂载和调用 ngOnInit()。我的 ngOnInit() 调用了一个函数,该函数在变量 startDate 中设置了一个日期:

ngOnInit() {
   this.getActualDate()
}

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

我正在尝试测试我的组件是否正在用 Date.

填充变量 startDate

这是我尝试过的:

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)).

函数toEqual()在比较中使用严格相等。这意味着一个对象不被认为与任何其他对象相等,即使它们看起来相同。

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

如果你想比较等价性,你应该只比较对象的原始属性。您还可以在对象上调用 toString(),因为字符串是原始类型:

console.log(new Date().toString() === new Date().toString()) // true