我在角(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());
})));
引发错误:
预期的间谍getComments已使用['api / jobs / 604',星期六2017年4月29日格林尼治标准时间+0100调用,但实际调用是['api / jobs / 604',星期六2017年4月29日00:00 :00 GMT + 0100,2017年4月29日星期六12:31:07 GMT + 0100]。
由于这些字符串明显相同,因此我认为这是因为now的测试值比组件运行时的值晚几毫秒,并且毫秒不会解析到字符串中。
所以我的问题是,如何使我的测试工作,有没有一种方法可以检查在当前时间的x毫秒内调用with的参数?
试试这个:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句