【发布时间】: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