通过 apollo 客户端测试使用查询和订阅的反应组件

Posted

技术标签:

【中文标题】通过 apollo 客户端测试使用查询和订阅的反应组件【英文标题】:test react component that use query and subscription with apollo client 【发布时间】:2021-05-28 04:20:43 【问题描述】:

有没有人有关于的提示?似乎当您将 <MockedProvider /> 组件与 mockslink 道具一起使用时,它只是忽略了模拟。 感谢您的帮助!

【问题讨论】:

【参考方案1】:

除非你有充分的理由,否则你不应该弄乱 MockedProvdierlink 属性。 MockedProvider 中使用的默认链接是MockLink,它管理为给定查询生成模拟的逻辑。像这样对apollo docs 中给出的示例进行建模,它应该可以工作:

import TestRenderer from 'react-test-renderer';
import  MockedProvider  from '@apollo/client/testing';
import  GET_DOG_QUERY, Dog  from './dog';

const mocks = [
  
    request: 
      query: GET_DOG_QUERY,
      variables: 
        name: 'Buck',
      ,
    ,
    result: 
      data: 
        dog:  id: '1', name: 'Buck', breed: 'bulldog' ,
      ,
    ,
  ,
];

it('renders without error', () => 
  const component = TestRenderer.create(
    <MockedProvider mocks=mocks addTypename=false>
      <Dog name="Buck" />
    </MockedProvider>,
  );

  const tree = component.toJSON();
  expect(tree.children).toContain('Loading...');
);

【讨论】:

以上是关于通过 apollo 客户端测试使用查询和订阅的反应组件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apollo Angular 测试查询、变异、订阅服务?

如何在 jest / apollo 客户端中捕获被拒绝的 graphql 订阅?

Apollo 发布和订阅错误:无法查询字段?

Apollo 客户端使用 GET 请求的查询反应钩子

React JS + Apollo 客户端查询错误:“网络错误:无法获取”。从手机打电话时

如何使用订阅和 AWS AppSync 高效同步 Apollo 的缓存