Graphql 阿波罗模拟错误状态->;错误:查询不再有模拟响应

Graphql 阿波罗模拟错误状态->;错误:查询不再有模拟响应,graphql,apollo,react-apollo,react-testing-library,Graphql,Apollo,React Apollo,React Testing Library,我想做什么? 使用@apollo/client/testing中的MockProvider模拟查询的错误状态 我希望得到什么? 组件使用useLazyQuery从后端查询内容,并返回错误,这将触发组件呈现错误消息 组件正在按预期工作 我到底得到了什么? 错误:Uncaught[错误:查询不再有模拟响应…并且测试未通过 我试过什么? 最终状态按预期工作。我尝试删除模拟数据中的错误状态,一切正常 我试着再等一段时间,但没用 我尝试在组件中记录错误,我可以看到错误。看起来MockProvider缺少某

我想做什么?

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

我希望得到什么?

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

组件正在按预期工作

我到底得到了什么?

错误:Uncaught[错误:查询不再有模拟响应…并且测试未通过

我试过什么?

  • 最终状态按预期工作。我尝试删除模拟数据中的错误状态,一切正常
  • 我试着再等一段时间,但没用
  • 我尝试在组件中记录错误,我可以看到错误。看起来MockProvider缺少某些内容,甚至在渲染组件之前就出错了
  • 我试图删除
    数据
    部分,或者将其添加回模拟中。请参见下面的代码
  • 您的代码在哪里?

    试试看

    试试看

    基码

    <MockedProvider addTypename={false} mocks={mocks}>
       ...
    </MockedProvider>
    
    
    ...
    
    根据经验,我发现不需要在结果中嵌套error字段来触发错误

    e、 g

    那么当使用

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

    错误
    将包含模拟中的对象。

    您找到解决方案了吗?
    <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" },
    });