自定义针对 graphql-tools 中的类型定义的模拟数据
Posted
技术标签:
【中文标题】自定义针对 graphql-tools 中的类型定义的模拟数据【英文标题】:Customize the mock data defined against the types in graphql-tools 【发布时间】:2021-09-24 01:48:19 【问题描述】:我正在使用 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
。我在这里遗漏了什么吗?
【问题讨论】:
【参考方案1】:来自graphql-tools/mocking
的文档
我们使用了casual,一个用于javascript 的假数据生成器,这样每次调用该字段时我们都能得到不同的结果。如果您打算使用数据进行测试,您可能希望使用假对象集合或始终使用一致种子的生成器。
从您的代码中,您可以将 name
分配给一个生成器函数,该函数将唯一名称添加到该字段。
const LineItem = () =>
(
name: functionGoesHere()
as LineItemType)
为模拟生成生成数据的两个库是,
Casual library Faker.js Library【讨论】:
以上是关于自定义针对 graphql-tools 中的类型定义的模拟数据的主要内容,如果未能解决你的问题,请参考以下文章