测试套件无法使用 @react-navigation/stack 运行

Posted

技术标签:

【中文标题】测试套件无法使用 @react-navigation/stack 运行【英文标题】:Test suite failed to run with @react-navigation/stack 【发布时间】:2021-06-05 09:39:46 【问题描述】:

我开始在 React Native 应用程序中编写单元测试。我使用以下命令在 Typescript 中创建了新项目。

npx react-native init rn_jest --template 反应原生模板打字稿

当我在项目的根目录中执行 npm test 时,我得到了以下结果

通过测试/App-test.tsx (7.472s) ✓ 正确呈现 (4329ms) 测试套件:1 个通过,共 1 个测试:1 个通过,共 1 个 快照:0 总时间:7.64 秒运行所有测试套件。

接下来我将React Navigation集成到应用程序中并再次执行npm测试,但这一次我得到以下错误

FAIL tests/App-test.tsx ● 测试套件未能运行

/Users/macbookpro/Documents/Manheium_Express/rn_jest/node_modules/@react-navigation/stack/lib/commonjs/views/assets/back-icon.png:1
�PNG

SyntaxError: Invalid or unexpected token

  at Runtime._execModule (node_modules/jest-runtime/build/index.js:1157:58)

控制台错误 未找到 react-native-gesture-handler 模块。确保您在本机平台上运行您的应用程序并且您的代码已链接 正确(cd ios && pod install && cd ..)。

For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation

  at Object.<anonymous> (node_modules/react-native-gesture-handler/lib/commonjs/RNGestureHandlerModule.ts:5:3)

测试套件:1 次失败,总共 1 次测试:总共 0 次快照:0 总时间:3.229 秒运行所有测试套件。 npm 错误!测试失败。 有关详细信息,请参见上文。

我检查了这个link 并没有找到任何解决方案。这是 App-test.tsx 文件中的代码

import 'react-native';
import React from 'react';
import App from '../App';

// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';

it('renders correctly', () => 
  renderer.create(<App />);
);

下面是package.json

 "dependencies": 
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/native": "^5.9.3",
    "@react-navigation/stack": "^5.14.3",
    "react": "16.13.1",
    "react-native": "0.63.4",
    "react-native-gesture-handler": "^1.10.3",
    "react-native-reanimated": "^2.0.0",
    "react-native-safe-area-context": "^3.1.9",
    "react-native-screens": "^2.18.1"
  ,

我也关注了这个link,但没有运气。如果有人在单元测试中使用 jest 解决了这个问题,请帮助我

【问题讨论】:

【参考方案1】:

我按照 Jest 文档处理了这个问题:

Testing with Jest

并遵循此文档中的处理静态资产部分:

Handling Static Assets

我的 package.json 看起来像:

  "jest": 
    "preset": "react-native",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js",
      "jsx",
      "json",
      "node"
    ],
    "setupFiles": [
      "<rootDir>/jest/setup.js"
    ],
    "moduleNameMapper": 
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
    

我终于跑了:

yarn jest

【讨论】:

以上是关于测试套件无法使用 @react-navigation/stack 运行的主要内容,如果未能解决你的问题,请参考以下文章

使用 Haskell Stack 运行详细的 0.9 测试套件时“无法在本地找到模块”

测试套件无法使用 @react-navigation/stack 运行

开玩笑:测试套件无法运行,意外令牌 =

测试套件无法运行 TypeError:无法读取未定义的属性“默认”

反应本机打字稿屏幕测试返回测试套件无法运行 AsyncStorage 为空

Vue Jest 测试套件无法运行:SyntaxError: Unexpected identifier