0

我正在使用 graphql-tools 模拟我的 UI(create-react-app)功能测试。我对 MockList 有疑问

目前,我正在按类型进行模拟,其中一个属性是数组,但我仍然需要能够自定义列表中的元素

例如,我有一个LineItem类型,它的模拟定义为

const LineItem = () =>
  ({
    name: 'Item name'
  } as LineItemType)

并且购物车类型有一个列表LineItem

const Cart = () =>
  ({
    id: 'cart-id',
    lineItems: [...new Array(2)],
  } as ActiveCartType)

有没有办法让购物车中的 2 件商品的商品名称不同?

我试图像这样映射数组

const Cart = () =>
  ({
    id: 'cart-id',
    lineItems: [...new Array(2)].map(i => ({...i, id: '123', name: 'new item name'})),
  } as ActiveCartType)

但是name模拟结果没有改变。它仍然设置为Item name。仅id更改为123. 我在这里错过了什么吗?

4

1 回答 1

0

从文档中graphql-tools/mocking

我们使用了casual,一个用于JavaScript的假数据生成器,这样每次调用该字段时我们都能得到不同的结果。如果您打算使用数据进行测试,您可能想要使用假对象的集合,或者始终使用一致种子的生成器。

从您的代码中,您可以分配name一个生成器函数,为该字段添加唯一名称。

  const LineItem = () =>
  ({
    name: functionGoesHere()
  } as LineItemType)

为模拟生成生成数据的两个库是,

于 2021-07-17T22:32:57.867 回答