Apollo GraphQL测试报错:期望已解析的GraphQL文档
解决Apollo测试中的"Expecting a parsed GraphQL document"错误
这个错误的核心原因很明确:你的Apollo MockedProvider使用的mock数据里,查询语句没有用gql标签解析成合法的GraphQL文档对象。虽然你的业务代码里已经正确用gql包裹了GET_ALL_COURIERS查询,但测试用的mock文件(couriers-mock.js)里的查询大概率还是原始字符串格式。
具体修复步骤:
检查并修正你的mock文件
打开../__fixtures__/couriers-mock.js,你大概率会看到类似这样的错误写法:// 错误:query是未解析的原始字符串 export default [ { request: { query: `query GetAllCouriers { GetAllCouriers { id url keyName name } }`, }, result: { data: { GetAllCouriers: [/* 你的测试数据 */] } } } ]把它改成用
gql标签包裹查询语句:import { gql } from 'apollo-boost'; // 或从react-apollo/apollo-client导入,依项目配置而定 export default [ { request: { query: gql` query GetAllCouriers { GetAllCouriers { id url keyName name } } `, }, result: { data: { GetAllCouriers: [/* 你的测试数据 */] } } } ]验证测试中的mock导入
确保你的测试文件里导入的mocks是上述修正后的文件,没有其他地方的mock遗漏了gql解析处理。额外检查(可选)
确认你的Redux store里已正确设置softlayerAccountId字段——因为GetAllCouriers组件依赖这个值生成GraphQL请求上下文,虽然这不是当前错误的直接原因,但可能会影响后续测试的正常运行。
错误原因说明
Apollo的MockedProvider要求每个mock的request.query必须是经过gql解析的DocumentNode类型,而非普通字符串。当你传入未解析的原始字符串时,Apollo无法识别它为合法的GraphQL查询文档,因此抛出"Expecting a parsed GraphQL document"的错误提示。
内容的提问来源于stack exchange,提问作者Reacting
相关产品推荐
相关产品推荐

