问题?
我正在尝试测试一种使用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'))

10-05 18:40