【问题标题】:Comparing timestamp results from Postgres in Jest在 Jest 中比较 Postgres 的时间戳结果
【发布时间】:2020-04-19 04:33:50
【问题描述】:

我正在 Jest 中为通过 pg 库从 Postgres 返回结果的 API 编写一些测试。我发布了一些数据(通过faker'ed 的一组值,template1),然后测试我得到的结果是否相同,允许id 值和modified 字段。 template1 数据包含一个approved 属性(SQL 定义:approved timestamp with time zone),它的生成方式如下:

{
  approved: faker.date.past(),
  description: faker.lorem.paragraph(),
  groups: faker.lorem.paragraph(),
}

这个测试是这样的:

expect(response.body.rows).toStrictEqual([
    {
      ...template1,
      id: 1,
      modified: null,
    },
  ])

问题在于测试失败,因为approved 的返回值似乎是一个字符串:

expect(received).toStrictEqual(expected) // deep equality

- Expected
+ Received

@@ -1,8 +1,8 @@
  Array [
    Object {
-     "approved": 2019-12-19T03:48:20.613Z,
+     "approved": "2019-12-19T03:48:20.613Z",
      "approved_by": "Percy_Hills@yahoo.com",

我尝试在比较日期和字符串之前将template1.approved 值转换为。两种方法都失败了。我做错了什么,我该如何解决这个问题?

【问题讨论】:

  • expect(response.body.rows).toStrictEqual([ { ...template1, id: 1, modified: null, approved: new Date(template1.approved).toJSON(), }, ]) 就是答案!

标签: node.js postgresql testing jestjs


【解决方案1】:

我不够努力 - 答案是将时间戳转换为 JSON:

expect(response.body.rows).toStrictEqual([
    {
      ...template1,
      id: 1,
      modified: null,
      approved: new Date(template1.approved).toJSON(), // here
    },
  ])

【讨论】:

  • 你拯救了我的一天。
  • 很高兴我能帮上忙 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多