You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apollo GraphQL测试报错:期望已解析的GraphQL文档

解决Apollo测试中的"Expecting a parsed GraphQL document"错误

这个错误的核心原因很明确:你的Apollo MockedProvider使用的mock数据里,查询语句没有用gql标签解析成合法的GraphQL文档对象。虽然你的业务代码里已经正确用gql包裹了GET_ALL_COURIERS查询,但测试用的mock文件(couriers-mock.js)里的查询大概率还是原始字符串格式。

具体修复步骤:

  1. 检查并修正你的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: [/* 你的测试数据 */]
          }
        }
      }
    ]
    
  2. 验证测试中的mock导入
    确保你的测试文件里导入的mocks是上述修正后的文件,没有其他地方的mock遗漏了gql解析处理。

  3. 额外检查(可选)
    确认你的Redux store里已正确设置softlayerAccountId字段——因为GetAllCouriers组件依赖这个值生成GraphQL请求上下文,虽然这不是当前错误的直接原因,但可能会影响后续测试的正常运行。

错误原因说明

Apollo的MockedProvider要求每个mock的request.query必须是经过gql解析的DocumentNode类型,而非普通字符串。当你传入未解析的原始字符串时,Apollo无法识别它为合法的GraphQL查询文档,因此抛出"Expecting a parsed GraphQL document"的错误提示。

内容的提问来源于stack exchange,提问作者Reacting

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:09:22