问题?
我正在尝试测试一种使用moment.subtract()方法的方法,该方法需要比当前日期节省1天。首先,Moment提供给我们的减法仅操作日期,不会创建新日期,因此没有新的内存地址位置。尝试测试此方法时,出现以下预期错误:[ Wed Jun 20 2018 09:14:52 GMT+0100 ]but actual calls were[ Wed Jun 20 2018 09:14:52 GMT+0100 ]
对吗?
我唯一想到的是日期引用正在更改的代码中的某处。我也将代码与单元测试一起放在下面
public prevDate = () => {
this.datePickerService.changeDate(this.date.subtract(1, 'day'));
}
ngOnInit() {
this.date = this.datePickerService.date; // Is this the problem?
}
单元测试:
describe('When the prevDate method is called', () => {
setupComponent();
it('should show yesterdays date', () => {
spyOn(datePickerService, 'changeDate');
datePickerService.date = moment();
component.prevDate();
expect(datePickerService.changeDate).toHaveBeenCalledWith(datePickerService.date.add(-1, 'days'));
});
});
最佳答案
您的测试未通过,因为您没有使用相同的参数:
this.datePickerService.changeDate(this.date.subtract(1, 'day'));
------------
.toHaveBeenCalledWith(datePickerService.date.add(-1, 'days'))
用这个代替:
.toHaveBeenCalledWith(component.date.subtract(1, 'day'))