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

标签 angular jasmine

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

我的组件挂载并调用 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/

相关文章:

javascript - 如何使用 Protractor 测试是否加载了正确的图像?

javascript - Angular 6 : error TS2339: Property 'value' does not exist on type 'HTMLElement'

node.js - Angular-cli AOT 构建失败,出现 "FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory"

javascript - 我什么时候应该在我的 Angular JS 单元测试中使用 $provide 与 Jasmine Spies

angular - Jasmine 测试属性可观察订阅

angularjs - pyOn 无法找到要监视的对象 all()

javascript - 如何在 Jasmine 测试框架中处理谷歌地图事件

Angular2 - 在两个不同的模块中声明一个组件

angular - 在 Chrome 打包应用程序中使用 Angular 2

angular - 无法在我的 angular-cli 项目上运行 ng lint