测试时间与酶
问题描述:
我想创建一个测试,我不能让它工作,因为当我在测试环境中做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”对不起,并感谢大家的帮助!
答
更新到时刻2.19.1。有2.19.0的问题可能会影响您的导入。
请勿使用
moment(new Date(string))
。这绕开了Moment的解析功能,并使用对象的解析来代替 - 这是低劣的并且经常不一致。只需使用moment(string)
,或者使用moment(string, format)
。
它会抛出一个错误?你如何定义测试时机? – jmargolisvt
@jmargolisvt它不会引发错误。它只是不通过,因为返回一个empy数组。我定义这样的时刻:从'时刻'进口时刻 – Marina