【问题标题】:How match two arrays witch contain array of objects in jest如何匹配两个数组女巫包含开玩笑的对象数组
【发布时间】:2018-10-15 06:31:05
【问题描述】:

我将数据发送到服务器并将返回的数据与发送的数据匹配。如果使用 expect.arrayContaining(array) 来比较选项和嵌套变体,它会发誓添加 db 的 id 和字段。如何将对象与包含对象数组的数组进行比较?

Example

要发送的数据:

{
  "name": "red dress",
  "options": Array [
    Object {
      "name": "size",
      "variants": Array [
        Object {
          "name": "M",
        },
        Object {
          "name": "L",
        },
        Object {
          "name": "S",
        },
      ],
    },
  ],
}

返回数据:

{
  "id": "dc67efd8-dcc4-43df-a8eb-9d95ea641749",
  "name": "red dress",
  "options": Array [
    Object {
      "id": 1,
      "name": "size",
      "productId": "dc67efd8-dcc4-43df-a8eb-9d95ea641749",
      "variants": Array [
        Object {
          "id": 1,
          "name": "M",
          "optionId": 1,
        },
        Object {
          "id": 5,
          "name": "S",
          "optionId": 1,
        },
        Object {
          "id": 6,
          "name": "L",
          "optionId": 1,
        },
      ],
    },
  ],
}

测试:

expect(body.data).toMatchObject(productData)

【问题讨论】:

  • 下面的答案不是我想要的。然而,这完美地解决了这个问题并提供了两个解决方案:Jest 中您需要什么,以及如果您在多个测试中需要此功能,如何扩展 Jest medium.com/@andrei.pfeiffer/…

标签: javascript node.js jestjs


【解决方案1】:

也许您可以使用forEach 循环来检查相关数据?我从您发送的数据中推测,重要的是响应中包含提供的选项和变体。

it('has provided options', () => {
  sent.options.forEach(o => {
    expect(received.options).toContainEqual(
      expect.objectContaining({ name: o.name })
    )
  })
})

对于变体也是如此:

it('has provided variants', () => {
  sent.options[0].variants.forEach(v => {
    expect(received.options[0].variants).toContainEqual(
      expect.objectContaining(v)
    )
  })
})

【讨论】:

    【解决方案2】:

    使用map 仅过滤您要检查的键

    类似:

    expect(yourResponseObject.options.variants.map(e=>({e.name}))).to.include(["blue","red", ... ]);
    

    https://www.chaijs.com/api/bdd/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-16
      • 2021-08-28
      • 1970-01-01
      • 2021-08-04
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多