【发布时间】:2017-05-13 21:02:43
【问题描述】:
我有一套 Jasmine 测试作为我基于 angular-cli 的项目的一部分。我的断言之一是:
expect(dispatchSpy).toHaveBeenCalledWith({
type: 'SET_RANGE', payload: { value: 'Weekly', start: moment('2017-04-24'), end: moment() }
});
但是,我收到以下错误。
使用 [ Object({ type: 'SET_RANGE', payload: Object({ value: 'Weekly', start: Mon Apr 24 2017 00:00:00 GMT+0100, end: Sat 2017 年 4 月 29 日 00:00:00 GMT+0100 }) }) ] 但实际调用是 [ Object({ type: 'SET_RANGE', payload: Object({ value: 'Weekly', start: Mon Apr 24 2017 00:00) :00 GMT+0100,结束:2017 年 4 月 29 日星期六 00:00:00 GMT+0100 }) }) ]
显然这些显示相同,但我在其他地方遇到过这个问题,momentJS 对象的某些属性不匹配。所以我通常会使用:
expect(moment('2017-01-01').format()).toEqual(moment('2017-01-01').format())
但是我在使用).toHaveBeenCalledWith(时不能使用format()位
有什么建议吗?
【问题讨论】:
-
请展示您正在测试的代码并自行测试,可能有更好的测试方法。 dispatchSpy 是从哪里来的?显然,
moment()甚至不会松散地等于moment()- 它们可以指代不同的时间时刻。一个好方法是存根moment(它应该是可注入的)。
标签: angular typescript jasmine momentjs karma-jasmine