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

GraphQL UpdateTransaction mutation触发MockedProvider无模拟响应报错

排查思路与解决方案

核心问题(最可能触发报错的原因)

你当前的mock返回结构不符合GraphQL的查询结构要求:你发起的UpdateTransaction mutation要求返回updateTransaction { id }的嵌套结构,但你的mock返回的data直接写了id: null,少了updateTransaction的嵌套层级,导致MockedProvider判定该mock不匹配对应请求,最终抛出无可用mock响应的报错。

修正后的mock配置如下:

{
  request: {
    query: UpdateTransaction,
    variables: {
      id: testTransaction.id,
      user_id: '61946c571c2a20c8f553d76b',
      description: 'baking supplies',
      merchant_id: 'walmart',
      debit: true,
      credit: false,
      amount: 17.99
    }
  },
  result: jest.fn(() => {
    console.log('hello')
    return {
      data: {
        // 补充嵌套的updateTransaction层级
        updateTransaction: {
          id: null
        }
      }
    }
  })
}

如果用静态返回,对应修改为:
result: { data: { updateTransaction: { id: null } } }

其他需要排查的常见场景

  • 确认testTransaction.id的值与实际请求携带的id完全一致:报错里实际请求的id为619463389d0b3bb69eba7379,如果testTransaction.id的取值和该值不相等(比如拼写错误、测试用例里testTransaction初始化错误),MockedProvider会因为变量不匹配无法命中mock。
  • 确认你引用的UpdateTransaction mutation定义和组件内发起请求用的是同一个导出:如果两个文件分别定义了同名的UpdateTransaction mutation,即使内容完全一致,GraphQL也会判定为不同的请求,无法匹配mock。
  • 确认该mutation没有被重复调用:MockedProvider的单个mock默认只能响应一次请求,如果你的组件逻辑里该mutation被触发了两次,你需要在mocks数组里添加两个相同的mock配置,或者用自定义的mock匹配逻辑允许多次匹配。
  • 排查变量类型是否完全匹配:比如amount字段如果实际传的是字符串类型的"17.99",即使值和mock里的数字17.99一致,也会因为类型不同判定为不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:04