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

如何在单元测试中针对模拟数据执行GQL查询以获取真实结果?

针对模拟数据执行GQL查询的工具及模式分析

可用工具推荐

  • graphql 核心库直接实现:借助graphql包的execute函数,配合自定义Schema和模拟数据源就能实现需求。示例代码:
    import { graphql, buildSchema } from 'graphql';
    
    // 定义匹配数据结构的GraphQL Schema
    const userSchema = buildSchema(`
      type User {
        id: ID!
        name: String!
      }
      type Query {
        user: User
      }
    `);
    
    // 完整的模拟数据
    const fakeUserData = { id: 1, name: "First Last" };
    
    // 根解析器,返回模拟数据源
    const resolvers = {
      user: () => fakeUserData,
    };
    
    // 执行目标查询
    const targetQuery = `query { user { id } }`;
    graphql({ schema: userSchema, source: targetQuery, rootValue: resolvers })
      .then(res => console.log(res.data)); // 输出 { user: { id: 1 } }
    
  • @graphql-tools/mock:这个封装好的工具可以快速生成符合Schema的模拟数据,并且会自动根据查询语句过滤返回字段,无需手动编写解析器逻辑,适合大规模模拟场景。

模式合理性判断

这个模式非常合理,核心优势包括:

  • 还原真实请求逻辑:返回的结构和真实GQL查询完全一致,避免冗余字段干扰测试结果,能更准确验证业务逻辑对所需字段的处理。
  • 降低维护成本:只需维护一份完整的模拟数据源,所有查询会自动提取对应字段,无需为每个查询单独编写mock响应。
  • TypeScript友好:配合Schema的类型定义,能保证模拟数据和查询结果的类型匹配,减少类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:52:07