Graphql 如何将模拟的可执行模式传递给Apollo客户端?

Graphql 如何将模拟的可执行模式传递给Apollo客户端?,graphql,react-apollo,Graphql,React Apollo,Apollo GraphQL的模拟示例有以下代码(见下文) 有趣的是最后一行——它们创建并执行graphql查询。但通常需要创建客户端对象。我不知道该怎么做 客户端希望NetworkingInterface作为参数,而不是可执行架构 那么,有没有一种方法可以从可执行模式创建客户端,而无需NetworkingInterface 从“graphql工具”导入{makeExecutableSchema,addMockFunctionsToSchema}; 从“graphql”导入{graphql};

Apollo GraphQL的模拟示例有以下代码(见下文)

有趣的是最后一行——它们创建并执行
graphql
查询。但通常需要创建客户端对象。我不知道该怎么做

客户端希望NetworkingInterface作为参数,而不是可执行架构

那么,有没有一种方法可以从可执行模式创建客户端,而无需NetworkingInterface

从“graphql工具”导入{makeExecutableSchema,addMockFunctionsToSchema};
从“graphql”导入{graphql};
//用模式字符串填充此字段
常量schematring=`…`;
//创建没有解析程序的GraphQL架构
const schema=makeExecutableSchema({typeDefs:schemaString});
//添加模拟,就地修改模式
addMockFunctionsToSchema({schema});
常量查询=`
查询任务浏览器{
用户(id:6){id,name}
}
`;
graphql(schema,query).then((result)=>console.log('Got result',result));

以下内容摘自GitHub上的
magbicaleman
根据我们的

您可以使用阿波罗测试utils轻松完成此操作,如下所示:

import { makeExecutableSchema, addMockFunctionsToSchema } from 'graphql-tools';
import { mockNetworkInterfaceWithSchema } from 'apollo-test-utils';
import { typeDefs } from './schema';

// Create GraphQL schema object
const schema = makeExecutableSchema({ typeDefs });

// Add mocks
addMockFunctionsToSchema({ schema });

// Create network interface
const mockNetworkInterface = mockNetworkInterfaceWithSchema({ schema });

// Initialize client
const client = new ApolloClient({
  networkInterface: mockNetworkInterface,
});

现在您可以正常使用客户端实例了

在Apollo client v2中,网络层的
网络接口
已替换为
链接
(参见客户端文档)

apollo测试utils
尚未针对apollo客户端v2进行更新,根据github提供的信息,当前建议使用:


然后,您只需要将客户机注入到您正在测试的任何内容中

我仍然需要合并文档的一个开放PR:理想情况下,它应该类似于
newapolloclient({schema:executableSchema})
我们没有尝试优化代码行。在这种情况下,流程的每个部分都有一个特定的方法,可以很好地完成一件事。如果您愿意,您可以轻松地编写一个助手函数来生成这一行!这不是关于代码行,而是关于简单性和易用性。这个答案只适用于Apollo客户端v1。在版本2中,
networkInterface
已替换为
link
。更多信息请点击此处:
import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { SchemaLink } from 'apollo-link-schema';
import { makeExecutableSchema, addMockFunctionsToSchema } from 'graphql-tools';
import { typeDefs } from './schema';

const schema = makeExecutableSchema({ typeDefs });
addMockFunctionsToSchema({ schema });

const graphqlClient = new ApolloClient({
  cache: new InMemoryCache(),
  link: new SchemaLink({ schema })
});