我无法在 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
我正在尝试测试一个组件,我遇到了这种情况:
我的组件挂载和调用 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