我正在继承一些代码,并且我有两个测试仍然失败,不确定它们是否在以前,或者是因为我使用的Jasmine版本不同(它们是2.0之前的版本)
失败的测试在beforeEach中具有此间谍设置
spyOn(datacontext, 'getImportLogForDate').and.callThrough();
然后在测试
controller.DepositDate = new Date();
controller.PerformActionThatCallsGetImportLogForDate();
expect(context.getImportLogForDate).toHaveBeenCalledWith('1', controller.DepositDate);
产生的错误令人困惑,因为它们是相同的
预期的间谍getImportLogForDate已使用['1',Date(2014年12月4日星期四13:00:51 GMT-0600(中部标准时间))调用,但实际调用是['1',Date(2014年12月4日星期四13) :00:51 GMT-0600(中部标准时间))。
我可以不验证是否已使用日期调用函数吗?
最佳答案
PerformActionThatCallsGetImportLogForDate
如何处理日期对象?茉莉花会比较日期对象的毫秒值,因此即使偏移1毫秒也不会相等,但是您仅通过读取控制台输出就不会看到详细程度。
另外,您还有2个其他选择。
只需测试将日期对象用作第二个参数即可。
expect(context.getImportLogForDate)
.toHaveBeenCalledWith('1', jasmine.any(Date));
测试该日期值,但在
toHaveBeenCalledWith
之外,以防该匹配器出现某些特定问题。expect(context.getImportLogForDate.calls.mostRecent().args[0])
.toEqual('1');
expect(context.getImportLogForDate.calls.mostRecent().args[1])
.toEqual(controller.DepositDate);