用酶测试时刻

时间:2017-10-16 15:02:00

标签: momentjs enzyme

我正在尝试创建测试而我无法使其正常工作,因为当我在测试环境中执行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', '[]'))

运行代码:
enter image description here

跑步测试:

enter image description here

PS:我更新了代码以使用给定的建议

我发现了错误:我在2016年结束日期而不是2017年u.u'对不起,谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

  1. 更新到时刻2.19.1。 2.19.0存在可能影响导入的问题。

  2. 不要使用moment(new Date(string))。这绕过了Moment的解析功能,并使用了Date对象的解析 - 这是次要的,往往是不一致的。只需使用moment(string),或moment(string, format)(适用时)。