RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1541371
Accepted
MrYogurt
MrYogurt
Asked:2023-09-19 00:09:22 +0000 UTC2023-09-19 00:09:22 +0000 UTC 2023-09-19 00:09:22 +0000 UTC

反应测试库不起作用

  • 772

我正在尝试在 next.js 的标准 ts 版本上设置反应测试库。在扩展坞上安装了软件包:

@testing-library/jest-dom"
@testing-library/react"
@testing-library/user-event

写了一个示例测试:

import '@testing-library/jest-dom'
import * as React from 'react'
import {render} from '@testing-library/react'
import { TodosContainer } from './TodosContainer'


test('Checking TodosContainer', () => {
  let component

  beforeAll(() => {
    component = render(<TodosContainer />)
  })

  test('should render', () => {
    expect(component).toBeInTheDocument()
  })

})

我什至无法运行它,因为测试命令不被接受:

Executing task: npm run test 


> todo-2023@0.1.0 test
> test

"test" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

此外,如果您进行 tsx 测试,则不会选择类型。

我的package.json:

{
  "name": "todo-2023",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "test": "test"
  },
  "dependencies": {
    "@types/node": "20.6.2",
    "@types/react": "18.2.21",
    "@types/react-dom": "18.2.7",
    "eslint": "8.49.0",
    "eslint-config-next": "13.4.19",
    "next": "13.4.19",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "typescript": "5.2.2"
  },
  "devDependencies": {
    "@testing-library/jest-dom": "^6.1.3",
    "@testing-library/react": "^14.0.0",
    "@testing-library/user-event": "^14.5.1"
  }
}

更新:

通过 jest 启动后,我遇到模块类型冲突,屏幕上出现错误:

屏幕

添加了 babel 配置:

module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    "@babel/preset-react",
    '@babel/preset-typescript'
  ]
};

和开玩笑的配置:

module.exports = {
  testEnvironment: "jsdom",
  transform: {
    ["^.+\\.[js|ts]x$"]: "babel-jest"
  },
}

情况没有改变,顺便说一句,错误在模块样式的导入上明确指出,我做错了什么?

javascript
  • 2 2 个回答
  • 31 Views

2 个回答

  • Voted
  1. Best Answer
    sMeerch
    2023-09-19T06:36:19Z2023-09-19T06:36:19Z

    您面临的问题是由于 package.json 中缺少运行测试的脚本。默认情况下,如果要使用 Jest 运行测试,则需要添加相应的脚本。

    您需要更新 package.json 文件并添加脚本来运行测试。操作方法如下:

    包.json

    {
      "name": "todo-2023",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "dev": "next dev",
        "build": "next build",
        "start": "next start",
        "lint": "next lint",
        "test": "jest" // Обновите эту строку, чтобы запускать Jest
      },
      // ... остальной контент вашего package.json
    }
    

    之后,您可以使用以下命令运行测试:

    终端

    npm run test
    

    Jest 现在应该被接受作为运行测试的命令,并且使用 @testing-library/react 编写的测试应该可以毫无问题地运行。

    如果您对 TypeScript 类型有问题,请确保安装了 TypeScript 和 @types/jest,并且您的 tsconfig.json 具有 Jest 设置,以便 TypeScript 可以正确处理您的测试文件。

    • 1
  2. sMeerch
    2023-09-19T07:20:29Z2023-09-19T07:20:29Z

    笑话配置.js

    {
      "moduleNameMapper": {
        "\\.(css)$": "identity-obj-proxy"
      },
      // ...
    

    并提前下载《identity-obj-proxy》一书。他们似乎描述了以下情况:For instance, you can tell Jest to mock this object as imported CSS modules; then all your className lookups on the imported styles object will be returned as-is.

    • 1

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5