我正在尝试测试一个组件,我有这种情况:
我的组件挂载并调用 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
关于angular - 我无法在 Angular 的组件测试中比较日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63293936/