有问题吗? 我正在尝试测试一种使用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'));
});
});
答案 0 :(得分:0)
您的测试未通过,因为您没有使用相同的参数:
this.datePickerService.changeDate(this.date.subtract(1, 'day'));
------------
.toHaveBeenCalledWith(datePickerService.date.add(-1, 'days'))
改用它:
.toHaveBeenCalledWith(component.date.subtract(1, 'day'))