graphql - Apollo 模拟错误状态 -> 错误 : No more mocked responses for the query

标签 graphql apollo react-apollo react-testing-library

我想做什么?

使用 @apollo/client/testing 中的 MockProvider 来模拟查询的错误状态。

我期望得到什么?

组件使用useLazyQuery从后端查询某些内容,并返回一个错误,这将触发组件呈现错误消息。

该组件正在按预期工作。

我实际上得到了什么?

Error: Uncaught [Error: No more mocked responses for the query ... And the test does not pass.

我尝试了什么?

  1. 最终状态按预期运行。我尝试删除模拟数据中的错误状态,一切正常。
  2. 我试图等待更长的时间,但没有帮助
  3. 我尝试在组件中记录错误,我可以看到该错误。看起来 MockProvider 缺少了一些东西,甚至在渲染组件之前就出错了
  4. 我尝试删除 data 部分,或将其添加回模拟中。请参阅下面的代码

你的代码在哪里?

尝试#1

const mock = {
      request: { query: GET_REFERRER_FROM_CODE, variables: { input: "edx" } },
      result: {
        errors: [new GraphQLError("Error!")],
        data: {
          userGetReferrerFromCode: {
            id: "abc",
            firstName: "Leo",
            lastName: "Qiu",
          },
        },
      },
    };

尝试#2

const mock = {
      request: { query: GET_REFERRER_FROM_CODE, variables: { input: "edx" } },
      result: {
        errors: [new GraphQLError("Error!")],
      },
    };

基本代码

<MockedProvider addTypename={false} mocks={mocks}>
   ...
</MockedProvider>

最佳答案

根据经验,我发现错误字段不需要嵌套在结果中即可触发错误。

例如

const mocks = [
    {
        request: { query: GET_REFERRER_FROM_CODE, variables: { input: "edx" } },      
        error: {
            message: "Something went wrong",
        },
    }
];

然后使用时

const { loading, data, error } = useQuery(GET_REFERRER_FROM_CODE, {
    variables: { input: "edx" },
});

error 将包含模拟中的对象。

关于graphql - Apollo 模拟错误状态 -> 错误 : No more mocked responses for the query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63730570/

相关文章:

reactjs - 中继片段传播不起作用

graphql - 如何在 Zeit Now 上使用 GraphQL 后端部署 Next.js?

node.js - 使用带有 bunyan 的 stackdriver 日志记录时,即使在 gcp 的 vm 实例内部也会出现 PERMISSION_DENIED 错误

graphql - 在 Apollo 模式 :download 之后获取 "error: GraphQL schema file should contain a valid GraphQL introspection query result"

node.js - 为什么子字段在不同界面时会发生冲突?

graphql - Amplify + AppSync 不会改变对象

javascript - 从 Apollo 商店检索数据

reactjs - Apollo GraphQL (React) refetchQueries/突变后更新不更新存储

react-native - 使用中继环境的突变

javascript - react native : Why Does GraphQL Query With Apollo Return Undefined?