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