【问题标题】:Jest expect mongoose timestamps开玩笑期望猫鼬时间戳
【发布时间】:2019-04-08 03:33:11
【问题描述】:

我正在使用 Jest 对 Express / Mongoose API 进行单元测试。 但是,我遇到了有关预期“_id”和时间戳字段(例如“createdAt”和“updatedAt”)的问题。

  const validBody = {
    email: faker.internet.email(),
    lastName: faker.name.lastName(),
    firstName: faker.name.firstName(),
    password: faker.internet.password()
  }

 // creation of an user by API call
 // ...

  const user = await User.findById(response.body.data._id)

  // OK
  expect(user._id).toEqual(expect.anything())
  expect(user.createdAt).toEqual(expect.anything())

  // FAIL
  expect(user).toEqual({
    ...validBody,
    _id: expect.anything(),
    createdAt: expect.anything()
  )}

两者都首先期望匹配良好。但是,使用完整对象的最后一个不匹配,无论我放入什么 expect.any(...) (甚至是任何东西())。例如对于 createdAt,我尝试过“Object, Date, mongoose.Schema.Types.Date, String” ...

你有什么想法吗?我相信猫鼬在两个最初的期望中将 _id 和 createdAt 对象转换为普通字段。但是,在对象中使用 expect.anything() 应该匹配...任何东西?

谢谢!

【问题讨论】:

    标签: javascript mongoose jestjs


    【解决方案1】:

    我通过在正在测试的 mongoose 实例中调用 .toJSON() 使其工作。

    // Example
    
    expect(user.toJSON()).toEqual({
        ...validBody,
        _id: expect.anything(),
        createdAt: expect.anything()
    )}
    

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2019-11-08
      相关资源
      最近更新 更多