首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Jest酶测试Material-ui RadioGroup按钮的变化

使用 Jest 和 Enzyme 测试 Material-UI 的 RadioGroup 组件的变化可以通过模拟用户交互来实现。以下是一个示例,展示如何设置和测试 RadioGroup 的变化。

1. 安装依赖

确保你已经安装了必要的依赖项:

代码语言:javascript
复制
npm install --save-dev jest enzyme enzyme-adapter-react-16 @material-ui/core

2. 创建一个简单的 RadioGroup 组件

首先,我们创建一个简单的 RadioGroup 组件,供测试使用:

代码语言:javascript
复制
// RadioGroupComponent.js
import React, { useState } from 'react';
import { RadioGroup, FormControlLabel, Radio } from '@material-ui/core';

const RadioGroupComponent = () => {
    const [value, setValue] = useState('option1');

    const handleChange = (event) => {
        setValue(event.target.value);
    };

    return (
        <RadioGroup value={value} onChange={handleChange}>
            <FormControlLabel value="option1" control={<Radio />} label="Option 1" />
            <FormControlLabel value="option2" control={<Radio />} label="Option 2" />
            <FormControlLabel value="option3" control={<Radio />} label="Option 3" />
        </RadioGroup>
    );
};

export default RadioGroupComponent;

3. 编写测试

接下来,我们编写测试来验证 RadioGroup 的变化。我们将使用 Enzyme 来模拟用户的选择。

代码语言:javascript
复制
// RadioGroupComponent.test.js
import React from 'react';
import { shallow } from 'enzyme';
import RadioGroupComponent from './RadioGroupComponent';
import { Radio } from '@material-ui/core';

describe('RadioGroupComponent', () => {
    let wrapper;

    beforeEach(() => {
        wrapper = shallow(<RadioGroupComponent />);
    });

    it('should render the RadioGroup with default value', () => {
        expect(wrapper.find(Radio).at(0).props().checked).toBe(true); // Option 1 is checked by default
        expect(wrapper.find(Radio).at(1).props().checked).toBe(false); // Option 2 is not checked
        expect(wrapper.find(Radio).at(2).props().checked).toBe(false); // Option 3 is not checked
    });

    it('should change the value when a different radio button is selected', () => {
        // Simulate selecting Option 2
        wrapper.find(Radio).at(1).simulate('change', { target: { value: 'option2' } });

        // Update the wrapper to reflect the new state
        wrapper.update();

        expect(wrapper.find(Radio).at(0).props().checked).toBe(false); // Option 1 is not checked
        expect(wrapper.find(Radio).at(1).props().checked).toBe(true); // Option 2 is checked
        expect(wrapper.find(Radio).at(2).props().checked).toBe(false); // Option 3 is not checked
    });
});

4. 运行测试

确保你的测试环境已正确配置,然后运行测试:

代码语言:javascript
复制
npm test

解释

  1. 组件创建: RadioGroupComponent 是一个简单的组件,包含一个 RadioGroup 和几个 FormControlLabel 组件。它使用 useState 来管理选中的值。
  2. 测试设置: 在测试文件中,我们使用 Enzyme 的 shallow 方法来渲染组件。
  3. 测试用例:
    • 第一个测试用例检查组件是否正确渲染,并验证默认选中的单选按钮。
    • 第二个测试用例模拟用户选择不同的单选按钮,并验证状态是否更新。

注意事项

  • 确保你已经配置了 Enzyme 的适配器,以便与 React 版本兼容。
  • 如果你使用的是 React 17 或更高版本,请确保使用相应的 Enzyme 适配器。
  • 你可以根据需要扩展测试用例,以覆盖更多的场景和边界条件。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

漫谈 React 组件库开发(二):组件库最佳实践

组件测试 js 单元测试框架有很多,chai、jest、mocha、karma 等等,Zent 组件库使用jest + enzyme 组合,下面来看一个例子: // Button UI test...jest 做 UI 测试有局限性,只能测试基本 dom 结构 和样式,一些逻辑交互无法测到,只能覆盖大部分情况。...组件发包 组件发包只有拥有发包权限的人才能操作,Zent 是以组件库为单位发包, yarn build 会将整个 Zent 代码打包,使用命令 yarn publish 发包,在发包之前会跑组件测试...三、小结 在本文中,我们从组件设计思路、编码规范、开发流程、测试、日常维护这五个方面阐述了如何构建一个 React 组件库,并且以 Zent 为例讲述了有赞是如何,任何一个组件库都需要经过这个生命周期...,但我们需要思考是:如何营造一个良好组件库生态环境?

1.6K30

Android UI学习之RadioButton和RadioGroup

首先说一下什么是RadioButton, 什么是RadioGroup RadioButton(单选按钮)顾名思义就是一组RadioButton只能选中其中一个。...通常RadioButton和RadioGroup是一起使用。 如果RadioButton和另外一个RadioButton不再同一组的话,那么这两个RadioButton都是可以同时被选中。...因为RadioButton状态没有发生变化 RadioGroup举例说明: radioGroup = (RadioGroup)findViewById(R.id.radiogroup); radioGroup.setOnCheckedChangeListener...总结: 1:  RadioButton和RadioGroup一般都是组合使用。...; (RadioButton所属包) 3: RadioButton和RadioGroup一般分2中使用情况:   : 当选中时立刻生效   :当选中时先不生效, 当最后有一个确定按钮点击后才生效

77220
  • 【干货分享】微信小程序单元测试攻略

    2,被测代码包含复杂环境因素需要处理或模拟,例如使用了storage、调用了接口、使用了环境变量等。 (图片来源:码农翻身公众号) 但无论如何,有价值东西就应该去做,不应该知难而退嘛。...示例:如何给一个提现弹窗写组件测试?...根据组件传入属性有相对应DOM表现。 传入不同属性值, 其组件产生内容、结构、样式变化也是可预计,例如: • 根据showCancel属性值, 判断Cancel按钮是否展示。...2.3.3 完整断言方法 2.3.4 模拟数据mock 当被测方法包含环境因素不能直接测试时,例如使用了localStorage,又或者被测方法调用了接口,不希望测试时调用接口影响业务或降低测试速度...3.3 覆盖率监测原理 使用jest --coverage”进行覆盖率测试时,会在项目里生成覆盖率报告: 给人看: 报告示例: 04 踩坑日志 4.1 loadid为null、render组件

    2.6K40

    前端框架与库 - Material-UI组件库

    本文将深入浅出地介绍 Material-UI 常见问题、易错点及如何避免这些问题,并附带代码示例,帮助你更好地掌握 Material-UI 使用技巧。 1....使用前应检查当前项目依赖 React 版本是否与 Material-UI 兼容。...如何避免 3.1 检查版本兼容性 在升级 Material-UI 或 React 之前,务必查阅官方文档,确认版本间兼容性。...示例代码 下面是一个使用 Material-UI 创建基本按钮组件示例: import React from 'react'; import Button from '@material-ui/core...然后,我们定义了一个样式规则,其中包含一个根类和子元素选择器。最后,我们在 return 语句中渲染了两个按钮,一个使用 contained 变体,另一个使用 outlined 变体。

    15310

    你不知道 Vue 单元测试(6000字实战单元测试

    Jest 是一个由 Facebook 开发测试框架。Vue 对其进行描述:是功能最全测试运行器。它所需配置是最少,默认安装了 JSDOM,内置断言且命令行用户体验非常好。...每个列表项右侧都有删除按钮,用 - 号表示,点击后删除该项 待完成列表有标记为已完成按钮,用 √ 号表示,点击后当前项移动到已完成列表 已完成列表有标记为未完成按钮,用 x 号表示,点击后当前项移动到未完成列表...it('输入框值变化时候,toDoText应该跟着变化', () => { const wrapper = shallowMount(ToDoList) wrapper.find('....配置测试覆盖率 测试用例写了部分,如果我们看下覆盖率如何,就需要要配置测试覆盖率。...● JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件● 你不知道 Npm(Node.js 进阶必备好文)● 用动画和实战打开 React Hooks(

    11.2K41

    前端框架与库 - Material-UI组件库

    本文将深入浅出地介绍 Material-UI 常见问题、易错点及如何避免这些问题,并附带代码示例,帮助你更好地掌握 Material-UI 使用技巧。1....使用前应检查当前项目依赖 React 版本是否与 Material-UI 兼容。...如何避免3.1 检查版本兼容性在升级 Material-UI 或 React 之前,务必查阅官方文档,确认版本间兼容性。...示例代码下面是一个使用 Material-UI 创建基本按钮组件示例:import React from 'react';import Button from '@material-ui/core/...然后,我们定义了一个样式规则,其中包含一个根类和子元素选择器。最后,我们在 return 语句中渲染了两个按钮,一个使用 contained 变体,另一个使用 outlined 变体。

    8200

    Android widget之CompoundButton

    大家好,又见面了,我是你们朋友全栈君。 简介 具有两个状态按钮,已选中或未选中。当按下或点击按钮时,状态会自动更改。...相比较Button而言多出了一个监听事件(接口) CompoundButton.OnCheckedChangeListener 当复合按钮检查状态发生变化时调用。...checked) — 更改这个按钮状态 setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) 当这个按钮检查状态发生变化时...RadioButton 单选按钮:是可以选中或取消选中双状态按钮。当单选按钮被取消选中时,用户可以单击来选中它。 注:单选按钮通常与RadioGroup在一起使用。...当多个单选按钮RadioGroup内时,检查一个单选按钮将取消选中所有其他单选按钮。 <?xml version="1.0" encoding="utf-8"?

    2.3K20

    前端框架选择指南:React vs Vue vs Angular

    生态系统: 极为丰富,有大量第三方库和工具。性能: 使用虚拟DOM,优化性能。模板语法: 使用JSX,更接近JavaScript语法。状态管理: 常见解决方案如Redux、MobX。...性能: 使用变更检测,可以配置优化。模板语法: 自己模板系统,支持双向数据绑定。状态管理: 提供NgRx等库进行状态管理。适合: 大型企业级项目,需要严格结构和规范团队。...社区和生态系统React: 庞大社区,大量开源库,如Material-UI、Ant Design等。Vue: 社区活跃,有许多优秀UI库,如Element UI、Vuetify等。...测试React: 使用Jest、Enzyme等工具进行单元测试和集成测试。Vue: 提供vue-test-utils,可以与Jest、Mocha等测试框架配合使用。...Angular: 提供Angular CLI测试工具,如Karma、Jasmine,以及Protractor进行端到端测试。选择哪个框架取决于项目需求、团队技能集、项目规模和长期维护考虑。

    13100

    Android开发笔记(三十七)按钮类控件

    无法在某个区域显示小图; 3、ImageButton上图像可按比例进行拉伸,而Button上大图会拉伸变形(因为背景图无法按比例拉伸); 从上面可以看出,Button适应面更广,所以实际开发中基本使用...,因为是抽象,所以并不能直接使用。...如果不指定就使用系统默认图标;如果要自定义图标就要设置该属性,当然也可以将该属性设置为@null,然后到drawableLeft中设置新图标。...setOnCheckedChangeListener : 设置勾选变化监听器 isChecked : 判断按钮是否选中 CheckBox CheckBox是复选框,点击勾选,再点击则取消勾选...getCheckedRadioButtonId : 获取选中状态RadioButtonID。 setOnCheckedChangeListener : 设置勾选变化监听器。

    1.5K30

    前端已死?不,前端正在进化

    二、你如何看待“前端已死” 虽然技术进步改变了前端开发一些工作方式,但这并不意味着前端本身消亡。相反,我认为这是前端技术一次重大进化。...前端测试 Jest: 用于 JavaScript 测试框架,可以方便地进行单元测试和集成测试。 Cypress: 用于端到端(E2E)测试框架,支持实时重载和调试。...UI组件库和设计系统 Material-UI: 基于 React 组件库,实现了 Google Material Design 设计规范。...这仅仅是一个前端技术栈概览,实际上前端领域技术和工具在不断发展和更新,新技术和工具不断涌现。因此,前端工程师需要保持持续学习态度,以适应不断变化技术环境。...总结 前端工程师需要保持对新技术关注和学习,不断提升自己技能和能力,以应对不断变化技术环境和市场需求。同时,也需要关注用户体验和交互设计等方面的发展,因为这将直接影响到产品吸引力和竞争力。

    29810

    JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

    在这篇教程中,我们将学习如何测试更复杂组件,包括用 Mock 去编写涉及外部 API 测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们应用程序通常需要从外部...打开 TodoList 测试文件,首先在最前面通过 jest.mock 配置 axios 模块 Mock(确保要在 import TodoList 之前),在 Mock 之后,无论在测试还是组件中使用都将是...为了进一步说明问题,让我们测试一下用户单击按钮后是否从我们组件发送了实际 post 请求。...不幸是,测试钩子并没有那么简单。在本文中,我们研究了如何使用 react-hooks-testing-library[2] 处理它。...这就是我们使用 react-hooks-testing-library[4] 原因,我们将在下一篇教程里讲解如何更加舒适测试 React Hooks 方法,敬请期待!

    4.8K20

    【Android从零单排系列十】《Android视图控件——RadioButton》

    目录 前言 一.RadioButton基本介绍 二.RadioButton常用主要属性介绍 三.RadioGroup中RadioButton使用常见问题 四.基础DEMO示例 前言 小伙伴们,在上文中我们介绍了...一.RadioButton基本介绍  在 Android 应用开发中,RadioButton是单选按钮,允许用户在一个组中选择一个选项。同一组中单选按钮有互斥效果。...注意使用 background 或者 drawableLeft时 要设置 android:button="@null" 三.RadioGroup中RadioButton使用常见问题 1.radiogroup...中radiobutton如何设置默认选中,可以看很早之前写这篇文章。...Radiogroup内如果有多个RadioButton如何设置自动换行并且保留点击事件,这个可以看我很早之前写一篇文章 RadioGroup 自动换行且保留点击事件 3.适用于较少类型  radiobutton

    59610

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...Confirmation 组件特点: Confirmation 标题 确认描述 —— 接收外部程序想要确认问题 一个确认按钮,支持外部回调函数 一个取消按钮,支持外部回调函数 这两个按钮都不知道点击时接下来要做什么事...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...例如点击按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演角色。...例如: 如何测试 react hooks ? 如何测试 react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期文章或者在评论区交流你想法和心得,欢迎一起探索前端。

    2.2K10

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...测试组件 首先使用 create-react-app 初始化一个 react 项目。目前 cra 已经内置了 @testing-library/react 作为测试框架。...例如点击按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演角色。...小结 当然 @testing-library/react 还有很多方便 api。大家可以自行查阅。 未来可能会出一些文章关于测试文章。例如: 如何测试 react hooks ?...如何测试react 路由? 如何测试接口? 希望这篇文章对大家有所帮助,也可以参考我往期文章或者在评论区交流你想法和心得,欢迎一起探索前端。

    2.1K10

    用户登录前后端分离开发实战案例:React,npm,webpack,ES6, Kotlin, Spring Boot, Gradle, Freemarker, Material UIKotlin 开发

    使用npm搭建Reactwebpack环境 本节我们来介绍如何通过 npm一步一步创建 React前端工程。我们通过Webpack打包构建React工程。...安装 下面我们来一步一步安装Material-UI——这个世界上最受欢迎React UI框架。Material-UI 可作为 npm 包使用。...^16.6.1" } 为了使用预构建SVG Material icons,例如在组件演示中找到那些, 须先安装 @material-ui/icons包: npm install @material-ui...from '@material-ui/core/Input'; import InputLabel from '@material-ui/core/InputLabel'; 使用 Button 按钮...import Button from '@material-ui/core/Button'; 使用 prop-types 我们使用 prop-types 第三方库对组件props中变量进行类型检测

    8K30

    Jest来给React完成一次妙不可言~单元测试

    技术栈选择 当我们想要为 React 应用编写单元测试时候,官方推荐是使用 React Testing Library[1] + Jest[2] 方式。...React Testing Library 编写单元测试还是可以正常运行,因为它更加关注应用事件处理,以及展示;而非应用实现细节,以及状态变化。...这里,像往常一样,我们使用 getByTestId 选择元素和检查第一个测试如果按钮禁用属性。对于第二个,如果按钮是否被禁用。 如果您保存文件或在终端纱线测试中再次运行,测试将通过。...第一个测试使用 fireEvent.click() 触发一个 click 事件,检查单击按钮时计数器是否增加到1。 第二个检查当点击按钮时计数器是否减为-1。...最后,我们将使用Jest函数mockResolvedValueOnce()来传递模拟数据作为参数。 现在,对于第二个测试,我们可以单击按钮来获取数据并使用async/await来解析它。

    14.9K33

    《每日一荐月刊》2020-01

    那么一种黑科技,就是使用第三方服务帮我们转换一下,生成订阅。原理很简单,就是轮训内容变化,如果变化就通知你。当然前提你要知道“如何判断发布了新内容”,这部分 feed43 做不错。...但知其然也要知其所以然,llhttp 是如何做到这一点呢?《llhttp 是如何使 Node.js 性能翻倍?》进行了详细阐述。...我个人目前在使用测试框架是 Jest,除了 Jest 还有很多优秀测试框架,知己知彼,百战不殆。...我们看看下: Mocha:非常老牌测试框架,使用 Jest 之前我在用 Enzyme:一个 React 测试框架,后期我不再使用了,而是转向 Jest + react-dom/test-utils Ava...Jasmine Cypress 另外你做自动化测试的话,推荐使用 Puppeteer,如果你做组件测试的话可以考虑 Jest 快照或者 StoryBook(一个 2015 年以来一直关注并且看好一个框架

    60230

    如何测试 React 异步组件?

    前言 本文承接上文 如何测试驱动开发 React 组件?,这次我将继续使用 @testing-library/react 来测试我们 React 应用,并简要简要说明如何测试异步组件。...异步组件测试内容 我们知道异步请求主要用于从服务器上获取数据,这个异步请求可能是主动触发,也可能是(鼠标)事件响应,本文主要包含 2 方面内容: 如何测试在 componentDidMount 生命周期中发出异步请求...如何测试(鼠标)事件发出异步请求 ? ---- 对于异步组件,有两件步骤需要进行测试: 第一:测试异步方法本身有没有被调用,并且传了正确参数。 第二:在调用之后,应用程序应该做出响应。...get*By* 函数获取dom 中元素, 这里使用 getByPlaceholderText 以上测试用例只测试了登录函数,但是我们并未写登录成功或者失败逻辑,接下来来我们通过 jest mock...测试登录成功 由于测试登录成功例子已经包含了"测试提交"和"测试渲染"功能,所以,可以将前面2个单元测试删除。登录后,按钮改成 loading 状态 disabled。

    3.3K50
    领券