如何使用 create-react-app 在 Jest 测试中忽略生成的 Relay 查询文件?

Posted

技术标签:

【中文标题】如何使用 create-react-app 在 Jest 测试中忽略生成的 Relay 查询文件?【英文标题】:How to ignore generated Relay query files in Jest tests using create-react-app? 【发布时间】:2020-02-02 01:15:04 【问题描述】:

我使用 create-react-app 创建了一个 React 应用并添加了 Relay。我想用 Jest 测试我的组件,但是 Relay 编译器会生成 Jest 读取为测试文件的文件。我不能忽略这些文件,因为我正在使用 create-react-app。

例如,测试可能如下所示:

// src/components/MyComponent/__tests__/MyComponent.test.js
import React from 'react';
import graphql from 'babel-plugin-relay/macro';
import  QueryRenderer  from 'react-relay';
import renderer from 'react-test-renderer';
import  MockPayloadGenerator, createMockEnvironment  from 'relay-test-utils';
import MyComponent from '../MyComponent';

const query = graphql`
  query MyComponentQuery @relay_test_operation 
    myComponent: node(id: "test-id") 
      ...MyComponent_myComponent
    
  
`;

const rootRender = ( props ) => <MyComponent myComponent=props.myComponent />;

it('renders without crashing', () => 
  const environment = createMockEnvironment();

  const component = renderer.create(
    <QueryRenderer
      environment=environment
      query=query
      variables=
      render=rootRender
    />
  );
  environment.mock.resolveMostRecentOperation((operation) =>
    MockPayloadGenerator.generate(operation));

  expect(component.toJSON()).toMatchSnapshot();
);

relay-compiler 将为查询生成一个文件src/components/MyComponent/__tests__/__generated__/MyComponentQuery.graphql.js

运行测试时,我得到:

FAIL src/components/MyComponent/__tests__/__generated__/MyComponentQuery.graphql.js
  ● Test suite failed to run

    Your test suite must contain at least one test.

如何让 Jest 忽略生成的查询文件?有没有办法在不从 create-react-app 中弹出的情况下做到这一点?

【问题讨论】:

【参考方案1】:

尝试将此添加到您的 package.json 中

    ...,
    "jest": 
        "testPathIgnorePatterns": [
            ".graphql.js"
        ]
    ,
    ...

【讨论】:

create-react-app 不支持testPathIgnorePatterns 哦,好的。也许你可以重命名你的 __tests__ 文件夹。 Jest 将查找具有以下任何流行命名约定的任何测试文件:__tests__ 文件夹中带有 .js 后缀的文件。带有 .test.js 后缀的文件。带有 .spec.js 后缀的文件。

以上是关于如何使用 create-react-app 在 Jest 测试中忽略生成的 Relay 查询文件?的主要内容,如果未能解决你的问题,请参考以下文章

Eslint 错误导致 create-react-app 无法编译

如何在 Windows 7 中使用 create-react-app

如何使用 create-react-app 提供 SSL 证书?

你如何在带有 Typescript 的 create-react-app 中使用 Mocha?

使用 create-react-app 和 Typescript 时如何在构建时加载 .md 文件?

如何在 create-react-app 上使用“/”阻止路由