我正在尝试创建测试而我无法使其正常工作,因为当我在测试环境中执行moment("2017-09-10")
时,它不会创建Moment对象。因此,isBetween
总是错误的。
这是我的功能
export const filteredStatistics = (data, startDate, endDate) => {
if(startDate === null || endDate === null) return data.toJS()
return data.filter(element => {
const date = moment(element.get("date"))
return date.isBetween(startDate, endDate, "days", "[]")
}).toJS()
}
这是我的测试
import moment from 'moment'
describe('all dates', () => {
it('returns original statistics', () => {
const statistics = getOverviewStatistics('ctr')(overview)
const statDate = moment(statistics.first().get('date'))
const endDate = moment(statistics.last().get('date'))
const current = filteredStatistics(statistics, statDate, endDate)
const expected = statistics.toJS()
expect(current).toEqual(expected)
})
})
我正在使用"时刻":" ^ 2.19.1","酶":" ^ 2.9.1" ,"反应":" ^ 15.4.1"。 你知道我怎么测试它?
使用运行代码创建的对象与运行测试之间的差异进行打印
console.log:
console.log('date:', date, 'startDate:', startDate, 'endDate', endDate, 'betweenResult:', date.isBetween(startDate, endDate, 'days', '[]'))
跑步测试:
PS:我更新了代码以使用给定的建议
我发现了错误:我在2016年结束日期而不是2017年u.u'对不起,谢谢大家的帮助!
答案 0 :(得分:1)
更新到时刻2.19.1。 2.19.0存在可能影响导入的问题。
不要使用moment(new Date(string))
。这绕过了Moment的解析功能,并使用了Date
对象的解析 - 这是次要的,往往是不一致的。只需使用moment(string)
,或moment(string, format)
(适用时)。