javascript - 单元测试时刻日期 - 内存地址问题?
问题描述
问题?我正在尝试测试一种使用 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'))
推荐阅读
- c - char ** 指针中的段错误(学习 malloc 和指针的用法)
- c - 从文件中读取数据的问题,一个简单的C语言代码
- json - Dataweave 2.0 - XML 到 JSON 数组:在不同 XML 结构中按 id 分组
- algorithm - 我是否正确计算了解决方案的时间复杂度?
- docker - Docker 容器中的间歇性 DNS 查找失败
- typescript - Jest 和 Typescript:无法检查对象是否是类的实例
- sql - 雪花 SQL 替换多个单词
- php - 如何用php在文本文件中用空格替换指定字符
- sql - Snowflake 无法识别在 Alteryx 中创建的表中的列
- c++ - 内部类变量中的读取访问冲突