gpt4 book ai didi

javascript - 单元测试时刻日期 - 内存地址问题?

转载 作者:行者123 更新时间:2023-11-30 06:25:09 25 4
gpt4 key购买 nike

问题是什么?我正在尝试测试一种使用 moment.subtract() 方法的方法,该方法从当前日期开始减去 1 天。首先,Moment提供给我们的subtract方法只是对日期进行操作,并没有创建新的日期,所以没有新的内存地址位置。尝试测试此方法时,出现以下预期错误:

[ 2018 年 6 月 20 日星期三 09:14:52 GMT+0100 ]
但实际通话是
[2018 年 6 月 20 日星期三 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'))

关于javascript - 单元测试时刻日期 - 内存地址问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50963673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com