Reactjs 根据服务器架构验证React GraphQL标记
我希望根据graphql服务器上生成的模式验证react客户端上的graphql标记。此验证将作为测试设置的一部分运行,并在graphql模式定义中出现中断性更改时向我们发出警告 到目前为止,我已经使用apollo schema:download--endpoint=http… 现在我想测试以下突变:Reactjs 根据服务器架构验证React GraphQL标记,reactjs,graphql,apollo,Reactjs,Graphql,Apollo,我希望根据graphql服务器上生成的模式验证react客户端上的graphql标记。此验证将作为测试设置的一部分运行,并在graphql模式定义中出现中断性更改时向我们发出警告 到目前为止,我已经使用apollo schema:download--endpoint=http… 现在我想测试以下突变: import gql from 'graphql-tag'; const LOGIN_MUTATION = gql` mutation LoginMutation($email: Str
import gql from 'graphql-tag';
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
id
accessToken
refreshToken
expires
}
}
`;
通过这样的测试:
import { GraphQLSchema } from 'graphql';
import { validate } from 'graphql/validation';
import * as schemaJson from '../../../../../backend/schema.json';
const schema = new GraphQLSchema(schemaJson as any);
import { LOGIN_MUTATION } from './Auth';
test("validate login mutation", assert => {
const errors = validate(schema, LOGIN_MUTATION);
const isValid = !errors.length;
expect(isValid).toBe(true);
});
这给了我一个错误:必须提供查询根类型
如何根据给定的json模式验证graphql标记?不需要编写单元测试来根据给定的json模式检查graphql标记 在开发过程中,您可以使用或类似的工具或工具。看起来是这样的:
在构建之前的CI/CD期间,您可以使用它作为检查代码样式的一部分。阿波罗模式:下载
命令在服务器上运行,并提供该查询的JSON结果。您不能接受这个JSON并将其直接传递给GraphQLSchema
构造函数——下面显示了初始化该类的正确方法。但是,您可以使用buildClientSchema
函数,该函数:
给定运行内省查询的客户端的结果,创建并返回一个GraphQLSchema实例,该实例可与所有GraphQL.js工具一起使用,但不能用于执行查询,因为内省不表示“解析器”、“解析”或“序列化”函数或任何其他服务器内部机制
总而言之:
const gql = require('graphql-tag')
const { validate, buildClientSchema } = require('graphql')
const schema = buildClientSchema(introspectionResult)
const document = gql`{
someQuery
}`
const errorArray = validate(schema, document)