Javascript 模仿GraphQL,MockList只生成数组中的两个项
我试图在GraphQL模拟服务器中生成一个包含10项的列表,如下所示:Javascript 模仿GraphQL,MockList只生成数组中的两个项,javascript,mocking,graphql,graphql-js,Javascript,Mocking,Graphql,Graphql Js,我试图在GraphQL模拟服务器中生成一个包含10项的列表,如下所示: import { makeExecutableSchema, addMockFunctionsToSchema, MockList } from 'graphql-tools'; import casual from 'casual'; import typeDefs from './schema.graphql'; export const schema = makeExecutableSchema({ typeDefs
import { makeExecutableSchema, addMockFunctionsToSchema, MockList } from 'graphql-tools';
import casual from 'casual';
import typeDefs from './schema.graphql';
export const schema = makeExecutableSchema({ typeDefs });
const mocks = {
File: () => ({
path: casual.random_element([
'/assets/images/cars/1.JPG',
'/assets/images/cars/2.JPG',
'/assets/images/cars/3.JPG',
'/assets/images/cars/4.JPG',
'/assets/images/cars/5.JPG',
'/assets/images/cars/6.JPG',
'/assets/images/cars/7.JPG',
]),
}),
UsedCar: () =>
new MockList(10, () => ({
price: casual.integer(10000, 99999999),
year: casual.integer(1990, 2017),
})),
};
// This function call adds the mocks to your schema!
addMockFunctionsToSchema({ schema, mocks });
但我总是买两辆二手车,我不知道为什么。
有人能帮忙吗
问候,,
Mostafa在代码中,您正在为UsedCar类型定义一个模拟解析器。您没有发布typedef或解析器,但我猜您的UsedCar类型定义包括两个字段(price和year)。。。不是包含这两个字段的整个对象数组。然而,这就是您正在告诉您的模拟函数的内容 如果您有一个获取
UsedCar
类型数组的查询,为了获得该类型的10个模拟对象,您必须模拟查询和该类型。因此,假设您有一个类似于getUsedCars
的查询,那么您真正想要的是:
mocks: {
Query: () => ({
getUsedCars: () => new MockList(10)
}),
UsedCar: () => ({
price: casual.integer(10000, 99999999),
year: casual.integer(1990, 2017),
})
}
编辑:如果您仅模拟该类型,则架构中解析为该类型数组的任何位置都将默认返回两个模拟对象,这就是为什么您看到的是两个而不是十个。感谢它工作正常,它是另一个graphql类型UsedCarQuery的一部分:()=>({find:()=>new MockList(12),}),非常感谢你的回答,嘲笑这个问题也是一个技巧!