我有以下 Angular Testing (4) -
it('should call service',
async(inject([CommentTableComponent], (cmp: CommentTableComponent) => {
spyOn(mockSock, 'getComments').and.callThrough();
cmp.ngOnInit();
expect(mockSock.getComments).toHaveBeenCalledWith('api/jobs/604', moment());
})));
抛出错误:
由于这些字符串明显相同,我认为这是因为 now 的测试值比组件运行时的值晚了几毫秒,并且毫秒未解析为字符串。
所以我的问题是,我怎样才能让我的测试工作,有没有办法检查当前时间的 x 毫秒内调用的参数?
最佳答案
试试这个:
var spy = spyOn(mockSock, 'getComments').and.callThrough();
var today = moment('2017-4-29').toDate();
jasmine.clock().mockDate(today);
expect(spy.calls.mostRecent().args[0]).toEqual('api/jobs/604');
expect(spy.calls.mostRecent().args[1].valueOf()).toEqual(today.valueOf());
引用:https://jasmine.github.io/2.5/introduction.html#section-Jasmine_Clock
关于angular - 将 jasmie .toHaveBeenCalledWith() 函数与 Moment 对象一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43695382/