【问题标题】:jest snapshot formats the moment object each time instead of returning the moment object开玩笑的快照每次都格式化时刻对象,而不是返回时刻对象
【发布时间】:2021-02-18 17:14:20
【问题描述】:

我有一个 Jest 测试,它通过设置 startDatemap() 格式化数组。我正在捕获返回地图的快照,因为它是脆弱的业务逻辑。但是,快照逻辑似乎正在修改对象的值。代码沙盒:https://codesandbox.io/s/moment-tz-test-xv1wr?file=/src/index.test.js

返回值测试正确,该值是一个矩对象:

    expect(moment.isMoment(events[0].startDate)).toBe(true);

但是转换后的快照是这样的:

Object {
    "endDate": "2021-02-18T17:09:16.582Z",
    "id": undefined,
    "startDate": "2021-02-18T17:09:16.582Z",
  },

有没有办法防止快照将值转换为字符串?

【问题讨论】:

    标签: javascript jestjs momentjs moment-timezone


    【解决方案1】:

    您可以考虑像这样测试它。它将确保生成的数组有 5 个项目,每个项目都是一个对象,startDateendDate 是时刻的实例

    expect(events).toHaveLength(5);
    expect(events).toEqual(
      expect.arrayContaining([
        {
          endDate: expect.any(moment),
          id: undefined,
          startDate: expect.any(moment)
        }
      ])
    );
    

    【讨论】:

    • 我会调查的。
    猜你喜欢
    • 2020-12-04
    • 2020-05-06
    • 2019-10-18
    • 2019-01-21
    • 2022-06-12
    • 2021-01-22
    • 2018-11-30
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多