我有以下 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/

10-12 03:32