首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在React Testing Library中测试传入Apollo GraphQL查询的数据的形状?

在React Testing Library中测试传入Apollo GraphQL查询的数据的形状,可以通过以下步骤进行:

  1. 导入所需的测试工具和库:
代码语言:txt
复制
import { render, waitFor } from '@testing-library/react';
import { MockedProvider } from '@apollo/client/testing';
import { gql } from '@apollo/client';
import MyComponent from './MyComponent';
  1. 创建一个模拟的GraphQL查询,该查询应该与组件中实际使用的查询保持一致:
代码语言:txt
复制
const GET_DATA_QUERY = gql`
  query GetData {
    data {
      id
      name
      age
    }
  }
`;
  1. 创建模拟的GraphQL响应数据:
代码语言:txt
复制
const mockResponse = {
  data: {
    data: {
      id: '1',
      name: 'John',
      age: 30,
    },
  },
};
  1. 使用MockedProvider包装组件,并传入模拟的GraphQL响应数据:
代码语言:txt
复制
const mocks = [
  {
    request: {
      query: GET_DATA_QUERY,
    },
    result: mockResponse,
  },
];

render(
  <MockedProvider mocks={mocks} addTypename={false}>
    <MyComponent />
  </MockedProvider>
);
  1. 在测试中使用waitFor等待组件加载完毕,并进行断言验证查询数据的形状:
代码语言:txt
复制
await waitFor(() => {
  const idElement = getByText('ID: 1');
  const nameElement = getByText('Name: John');
  const ageElement = getByText('Age: 30');

  expect(idElement).toBeInTheDocument();
  expect(nameElement).toBeInTheDocument();
  expect(ageElement).toBeInTheDocument();
});

以上步骤中的MyComponent是被测试的组件,根据实际情况替换为实际的组件名称。通过MockedProvider提供模拟的GraphQL响应数据,并使用waitFor等待组件加载完毕后进行断言验证数据的形状。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【译】Graphql, gRPC和端对端类型检验

StackPath最近发布了新的门户网站,它让用户可以一站式地配置我们所提供的服务(CDN,WAF, DNS以及Monitoring)。这个项目涉及到整合不同的数据源,以及一些现有和全新的系统。虽然我们认为开发效率的优先级在一个新启动的项目中是最高的,但我们还是希望在保证足够快的开发进度的前提下,尽可能早地做一些能够保证产品长期稳定运行的技术投资,以便我们能够持续不断地在一个健壮的基础设施上添加新的功能特性。最终我们选择了Apollo GraphQL+gRPC+React+TypeScript这样一套技术栈,并对使用它们的结果感到满意。在这篇博客中,我们会解释为何选择这些技术栈,并通过一个简单的示例项目进行论述。

02
领券