【问题标题】:Test suite failed to run. Cannot find module '@testing-library/jest-native' running a test using react native testing library测试套件无法运行。找不到模块 \'@testing-library/jest-native\' 使用反应原生测试库运行测试
【发布时间】:2022-11-09 04:34:54
【问题描述】:

我正在对需要检查它是否具有特定 CSS 样式的组件进行测试。由于 React Native 测试库默认没有此功能,我安装了 @testing-library/react-native 以从那里使用 toHaveStyle 但在运行测试时出现错误:测试套件无法运行。无法从“我的测试文件的路径”中找到模块“@testing-library/jest-native”。这是我的测试和开玩笑的配置:

// test file
import React from 'react';
import {toHaveStyle} from '@testing-library/jest-native';

describe('JobForm', () => {
  expect.extend({toHaveStyle});
  // ....
});


// package.json
{
//...
   "jest": {
        "preset": "react-native",
        "moduleFileExtensions": [
            "ts",
            "tsx",
            "js",
            "jsx",
            "json",
            "node"
        ],
        "transformIgnorePatterns": [
            "node_modules/(?!(jest-)?@?react-native|@react-native-community|@react-navigation|aws-amplify-react-native|@ui-kitten)"
        ],
        "setupFiles": [
            "<rootDir>/jest.setup.js",
            "./node_modules/react-native-gesture-handler/jestSetup.js"
        ]
    }
}

//jest.setup.js
import mockRNCNetInfo from '@react-native-community/netinfo/jest/netinfo-mock.js';
import mockAsyncStorage from '@react-native-async-storage/async-storage/jest/async-storage-mock';

jest.mock('@react-native-community/netinfo', () => mockRNCNetInfo);
jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage);

【问题讨论】:

    标签: javascript react-native jestjs babeljs react-native-testing-library


    【解决方案1】:

    您似乎忘记完成来自@testing-library/jest-native 包的Usage sectionInstallation section 下方的部分)的配置。您需要做的就是将此行添加到您的设置文件中:

    import '@testing-library/jest-native/extend-expect';
    

    【讨论】:

    • 嘿,非常感谢你的回答。您向我发送链接的部分还提到了第二种方法:或者,您可以选择性地仅导入您打算使用的匹配器,并扩展 jest 的期望: import { toBeEmptyElement, toHaveTextContent } from '@testing-library/jest-native '; expect.extend({ toBeEmptyElement, toHaveTextContent });我确实使用过这个,但我仍然收到错误
    • 我也尝试将此语句导入测试文件,但仍然出现错误 =/
    • 另外,我不确定哪个安装文件?
    • 您的设置文件是您的package.json 文件中描述的文件,位于jest.setupFiles。据我所见,它是jest.setup.js 文件。只需尝试添加我提到的行并检查是否有效。如果没有,您能否提供一条错误消息(可能编辑您的答案)?
    • 此外,理想情况下,您应该将这些东西(甚至只导入使用的匹配器)保留在设置文件中并从那里导入它们。我也认为值得一问,但是:你跑过npm install --save-dev @testing-library/jest-native 吗?
    【解决方案2】:

    如果出现配置或导入问题,最好将您的配置与 RNTL 团队提供的模型一进行比较。 RNTL 有一个basic example app 可用于此目的,尤其是它还包括@testing-library/jest-native

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2019-07-08
      • 2022-06-12
      • 1970-01-01
      • 2022-01-05
      • 2023-04-02
      • 1970-01-01
      • 2020-11-25
      • 2021-05-30
      相关资源
      最近更新 更多