Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模仿GraphQL,MockList只生成数组中的两个项_Javascript_Mocking_Graphql_Graphql Js - Fatal编程技术网

Javascript 模仿GraphQL,MockList只生成数组中的两个项

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

我试图在GraphQL模拟服务器中生成一个包含10项的列表,如下所示:

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),}),非常感谢你的回答,嘲笑这个问题也是一个技巧!