React 测试库 fireEvent.click 不起作用

2024-02-04

我基本上只是想改变一个计数器并显示该值已经改变。我正在这样做getByTestId那么这可能是问题所在?

这是我的组件:

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
    const [count, setCounter] = useState(0)
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
                div
                <div
                    onClick={() => setCounter(prevCount => prevCount + 1)}
                    data-testid="addCount"
                >
                    +
                </div>
        <div data-testid="count">
          {count}
        </div>
                <div
                    onClick={() => setCounter(prevCount => prevCount - 1)}
                    data-testid="minusCount"
                >
                    -
                </div>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

这是我试图运行的测试:


describe('State is managed correctly', () => {
    const { getByTestId } = render(<App />)
    const add = getByTestId(`addCount`)
    const count = getByTestId(`count`)

    it('count starts at 0', () => {
        expect(count).toHaveTextContent("0")
    })


 it('count added, value should be 1', () => {
        fireEvent.click(add)
        expect(count).toHaveTextContent("1") // error count is still 0
    })
})

看起来你不能像我希望的那样真正“管理”反应测试库中的状态。从阅读文档来看,您也不应该这样做。

这是我的解决方案:

import React from 'react'
import { render, fireEvent, cleanup } from '@testing-library/react'

import App from '../src/App'

afterEach(cleanup)

describe('App component loads correctly', () => {
    const { container } = render(<App />)
    const { firstChild } = container
    test('renders correctly', () => {
        expect(container).toHaveTextContent(`Learn React`)
    })

    test('first child should contain class "App"', () => {
        expect(firstChild).toHaveClass(`App`)
    })
})

describe('State is managed correctly', () => {
    it('count starts at 0', () => {
        const { getByTestId } = render(<App />)
        const count = getByTestId(`count`)

        expect(count.innerHTML).toBe("0")
    })


 it('should add 1 to count', () => {
        const { getByTestId } = render(<App />)
        const count = getByTestId(`count`)
        const add = getByTestId(`addCount`)

        fireEvent.click(add)
        expect(count.innerHTML).toBe("1")
    })

    it('should minus 1 from count', () => {
        const { getByTestId } = render(<App />)
        const count = getByTestId(`count`)
        const minus = getByTestId(`minusCount`)

        fireEvent.click(minus)
        expect(count.innerHTML).toBe("-1")
    })
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 测试库 fireEvent.click 不起作用 的相关文章

  • 为什么 React 组件会渲染两次?

    我已将调试器放置在组件的渲染中 并且看到它有时 如果不是大多数时间 运行两次 是因为第一次渲染是在组件接收任何道具之前吗 第二次是收到的时候 我认为组件会经历安装 接收道具 然后渲染的过程 或者它是否安装 渲染 检查道具 然后重新渲染 如果
  • Jest 中从未调用图像 onLoad 处理程序

    我正在尝试使用 Jest 测试将 dataUrl 加载到图像中 我正在使用 JSDOM 并按照说明添加resources usable 作为一个选项 如果我直接从 Node 运行该代码 则该代码可以工作 但是当我尝试在 Jest 中运行它时
  • Material UI 切换按钮 - 选择时无法更改背景颜色

    我正在尝试使用类似于单选按钮的 Material UI 切换按钮 为用户提供针对给定问题的 2 个选择 它的功能基本符合预期 但是当尝试调整选择每个切换按钮时的样式时 我无法更改切换按钮的背景颜色 我在 ToggleButton 组件上使用
  • 发送404状态并重定向到react-router中的404组件

    我有一个 React router 3 0 0 设置 其中包含一个 NotFound 组件 我将其显示为后备
  • ReactJS 模式无法使用 Materialise css 打开

    我是 ReactJS 的新手 正在学习使用 Materialise css 创建模型 https materializecss com https materializecss com import React Component from
  • ReactJS 服务器端渲染与客户端渲染

    我刚刚开始研究ReactJS 发现它提供了两种渲染页面的方式 服务器端和客户端 但是 我不明白如何一起使用它 构建应用程序是两种不同的方法 还是可以一起使用 如果我们可以一起使用它 该怎么做 我们需要在服务器端和客户端复制相同的元素吗 或者
  • 如何修复 React-Redux 应用程序中的 431 请求标头字段过大

    我正在 YouTube 上使用 Redux 完成 MERN 注册 登录身份验证教程 当尝试在 Postman 中将测试用户 POST 到服务器时 我收到 431 标头请求太大错误响应 我在一些地方读到清除浏览器中的缓存 历史记录是有效的 所
  • 使用 React js 和 Express API 服务器通过 fetch 发布对象

    我在 fetch 中的 post 方法遇到麻烦 因为我的服务器从客户端接收到一个空对象 我已经检查了客户端 但无法发送我想要发送的值 这是我的服务器 const express require express const app expre
  • 从“react-native-vector-icons/Ionicons”导入图标

    我可以在同一屏幕上导入react native vector icons font awesome 和react native vector icons Ionicons 吗 基本上我想在同一屏幕上为不同的图标使用 font awesome
  • Antd datepicker (date.clone/date.load 不是函数)

    我有一个反应应用程序 有一个复选框可以禁用日期选择器 但当我使用复选框禁用它时 我无法选择任何日期 如果我删除复选框及其功能 则不会出现错误 目前 我得到 date clone 不是函数 error const dateFormat YYY
  • 需要将焦点放在react中的div上

    我有一个之前用 H1 标签包裹的文本 页面加载后 我需要专注于该文本 为了方便起见 我将它包装在 div 中 render const translate billing primaryContactSelection true this
  • 在react渲染函数中是否可以返回空?

    我有一个通知组件 并且有一个超时设置 超时后我打电话this setState isTimeout true 我想做的是 如果已经超时 我只想渲染任何内容 render let finalClasses this state classes
  • useRef 和普通变量的区别

    我想知道这两个代码之间的区别 1 import React from react import ReactDOM from react dom function App const myref React useRef 0 2 import
  • React Native:uri 图像未显示在 Android 上,但显示在 iOS 模拟器上

    我正在开发一个反应本机应用程序 我正在从 API 获取一些图像并将它们显示为平面列表 问题是这些图像在iOS模拟器上但不显示Android模拟器 我已经设置了图像的宽度和高度 但问题仍然相同 这是下面的代码 成分
  • 从 Flow 中的对象值定义联合类型

    我有一个这样的枚举 const Filter ALL ALL COMPLETED COMPLETED UNCOMPLETED UNCOMPLETED 我想做的是声明一个联合类型 如下所示 type FilterType Filter ALL
  • 地图内的三元运算符

    我正在开发一个网络应用程序 用户可以在其中查看项目列表 并可以将某些项目标记为收藏夹 收藏夹以带有 prop this props favourites 的 ID 数组的形式提供 为了防止重复条目 如果 item id 已经在 this p
  • 防止react-router History.push重新加载当前路由

    我正在迈出第一步react router 我目前正在使用hashHistory出于开发目的 我正在执行 手动 导航 也就是说 我是not using Link我正在调用history push some route 为了导航 响应锚标记上的
  • 如何使用create-react-app开发多个页面?

    使用create react app创建应用程序时 只有一个index html 这是否意味着React一次只能处理一个SPA 如果我想开发多个页面怎么办 我应该使用 create react app 创建另一个 SPA 然后在构建每个 S
  • 当列表包含图像时,React Native FlatList 感觉很慢

    我为 avater 使用 64x64 图像 它的尺寸非常小 通过我的应用程序 滚动时帧率下降至 25 35 fps 如何优化 flatList 图像
  • Jest 使用 window.require 测试 Electron/React 组件

    我目前正在创建一个使用 React 来创建界面的 Electron 应用程序 为了访问 fs 我一直在使用 const fs window require fs 在电子窗口中效果很好 问题是 当我为使用 window require fs

随机推荐

  • 虚拟继承是否强制基类默认可构造?

    在下面的代码中 编译器正在请求基址class X to be 默认可构造 但是 如果我删除virtual来自继承的关键字类节点 会员的访问权限m x当然 变得含糊不清 但是默认构造函数 for class X不再需要 这是什么原因呢 inc
  • Facebook Open Graph:将网站与 Facebook 页面关联

    我想在我的 Facebook 页面和我的网站之间建立关系 我已经设置了它们 并将 OG 标签添加到网站中 然而 Facebook 页面和我的网站之间似乎没有任何联系 这fb admin标签设置为我的 Facebook 用户 ID 但我想与我
  • ANTLR 歧义问题

    我有这个语法 grammar MyGrammar prog lexeme lexeme TOK INTLIT 0 9 Identifiers Letter Letter Digit fragment Letter a zA Z fragme
  • ASP.NET 会员注册问题

    我在会员资格方面遇到了困难 好吧 这真的很奇怪 我可以注册一个用户 我可以注册 我可以登录 但是 当我去注册另一个用户时 该用户没有保存在数据库中 我得到了一个 当用户尝试登录时 会员凭证验证失败事件 我假设是因为用户从未被保存 这是我用来
  • 将 Java 回调函数传递给 JSNI 方法?

    我想将成功和失败回调 Java 函数传递给 JSNI 方法 这是我到目前为止所得到的 但它不起作用 我该如何修复它 package c public class A test new Callback
  • 如何清除 ttk.Treeview 小部件中的项目?

    ing scroll Scrollbar window1 frame1 orient VERTICAL ingredients ttk Treeview window1 frame1 yscrollcommand ing scroll se
  • 当我打开模式时添加下一个和上一个按钮

    我是新手 我想问您是否可以帮我将下一个和上一个按钮添加到我的模式中 这些图片不是画廊形式的 我是添加 div 还是像这样添加一些 javascript 你能推荐一些吗 var modal document getElementById my
  • 带标题的多个图像文件上传

    我设法得到了字幕foreach循环但现在我面临一个新问题 由于嵌套循环 我的数据库中出现重复项 请检查下面的代码 JavaScript window onload function if window File window FileLis
  • Python Tkinter,使用循环设置按钮回调函数

    我正在编写一个显示按钮网格的程序 当按下按钮时 我希望它将网格中按钮的位置 行列 打印到控制台 这是我所拥有的 import Tkinter as tk class board tk Tk def init self parent None
  • DateFormatter 返回错误的时间[重复]

    这个问题在这里已经有答案了 我对 Date 进行了扩展 返回格式化字符串 extension Date var myFormattedDate String let formatter DateFormatter formatter tim
  • 变量===未定义与typeof变量===“未定义”

    The jQuery 核心风格指南 https contribute jquery org style guide js type checks建议两种不同的方法来检查变量是否已定义 全局变量 typeof variable undefin
  • jQuery UI 可排序动画

    我有一个类似网格的列表 并且按照计划在其中运行可排序功能 我想为每个项目设置动画 除了被操纵以在列表中平滑滑动的项目之外 我在这里设置了一个示例 http jsfiddle net wpmte http jsfiddle net wpmte
  • Vue.js 强制重新渲染包含 v-once 指令的组件

    Vue 2 0 我有一个包含 div 的组件 使用v once防止重新渲染的指令 当 URL 参数更改时 即单击 vue router 链接 更改组件中使用的 url 和参数 该组件会更新它显示的数据 该组件成功地使用新数据重新渲染所有内容
  • Azure MobileApp 自定义身份验证、刷新令牌

    我需要我的应用程序支持针对我们的私人数据库的自定义身份验证 并遵循此处 Adrian Hall 书中的建议https adrianhall github io develop mobile apps with csharp and azur
  • 在Java中,如果子类用实例子变量隐藏静态父变量,继承的方法将使用哪个变量?

    正如中所讨论的 这可能是一件坏事Java中的父类和子类可以有相同的实例变量吗 https stackoverflow com questions 3501060 can parent and child class in java have
  • JPA:无法使 OrderBy 工作

    我正在尝试在保留并检索后打印有序列表 我的实体 Entity public class News Id GeneratedValue private Long id private String content OneToMany casc
  • '没有找到应用程序。要么在视图函数中工作,要么推送应用程序上下文。 [复制]

    这个问题在这里已经有答案了 我正在尝试将 Flask SQLAlchemy 模型分成单独的文件 当我尝试跑步时db create all I get No application found Either work inside a vie
  • 有选择地将不记名令牌添加到 Retrofit 中的标头中

    我想知道是否有任何选项可以根据 Retrofit 中的标志或注释启用 禁用标头拦截器 由于我的 API 中很少有不需要令牌的路径 因此我需要跳过向这些 API 调用添加令牌的过程 目前我有一个简单的拦截器 它将向我的应用程序发出的所有请求添
  • 如何使用 babel/register 忽略非 js 文件

    当我的 Node 应用程序包含来自我的应用程序的路由时 我想忽略非 js 文件 例如 import scss App scss i e via Router js gt Routes js gt App js 目前 Node 显然会抛出解析
  • React 测试库 fireEvent.click 不起作用

    我基本上只是想改变一个计数器并显示该值已经改变 我正在这样做getByTestId那么这可能是问题所在 这是我的组件 import React useState from react import logo from logo svg im