首页 > 其他分享 >cra react18 ts 自定义hooks 单元测试

cra react18 ts 自定义hooks 单元测试

时间:2023-02-01 14:47:03浏览次数:53  
标签:const 自定义 hooks app 单元测试 react create useCounter

首先创建 cra 项目
如果报错 说 最新的 create-react-app 版本是 5.x ,而你的是 4.x 的话
需要 先卸载 ,再重新安装
sudo npm uninstall -g create-react-app
sudo npm install -g create-react-app

这个时候再看下版本 应该就是 ok的

create-react-app --version
5.0.1

然后创建项目

npx create-react-app hooks-test --template typescript

添加依赖

yarn add -D @testing-library/react-hooks

创建 自定义 hooks useCounter.ts

import {useState, useCallback} from 'react'

export const useCounter = () => {
  const [count, setCount] = useState(0)

  const increment = useCallback(() => setCount(x => x + 1), [])
  const decrement = useCallback(() => setCount(x => x - 1), [])

  return {count, increment, decrement}
};

创建 测试文件 userCounter.spec.ts

import {act} from '@testing-library/react-hooks'
import {renderHook} from '@testing-library/react'


import {useCounter} from "./useCounter";

test('should increment counter', () => {
  const {result} = renderHook(() => useCounter())
  act(() => {
    result.current.increment()
  })
  expect(result.current.count).toBe(1)
})

在webstorm 上面 执行

如果报错 React 18 Support 看看是不是引用写错了

结果ok ,当然 也可以 在上面打断点

参考文档

https://react-hooks-testing-library.com/usage/basic-hooks

标签:const,自定义,hooks,app,单元测试,react,create,useCounter
From: https://www.cnblogs.com/ifnk/p/17082504.html

相关文章

  • android自定义adapter之简单写法
      自定义adapter比较常用,很多人还在使用extendsBaseAdapter,然后写一大堆重复的代码,这里是提供一个封装的工具类,把重复的代码都省略掉,让adapter变的简洁一些。  给......
  • 自定义 CircleView - 继承 View 重写 onDraw
    一、画一个圆形的View如图,该圆形控件的宽为match_parent,高150dp,为了看到控件的整体宽高效果,为控件加了背景色即浅绿色:#3300aa00该页面的布局<?xmlversion="1.0"encodi......
  • CompletableFuture使用IOC容器中自定义线程池
    CompletableFuture使用IOC容器中自定义线程池创建自定义线程池,并交给ioc容器管理@ConfigurationpublicclassThreadPoolConfig{@BeanpublicExecutora......
  • mybatisplus test标签 调用自定义或者其他依赖方法进行判空
      @包路径@方法<iftest="@org.apache.commons.lang3.StringUtils@isNotBlank(rulePageRequest.nameOrNumber)">AND(......
  • 自定义上传图片(自定义上传input样式)
    ##1.Html文件<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docum......
  • vue3 自定义组件中使用 v-model
    1、直接绑定v-model,但是Props要固定为modelValue组件D:注意这里的Props和Emits,必须使用Vue提供的defineProps()和defineEmits()。如果父组件想要使用v-mod......
  • QML 自定义窗口简易实现:使用过滤 WINDOW 事件的方式
      1.前言QML自定义窗口目前看到的主要有两种方式,一种是纯QML实现,使用MouseArea来处理鼠标相关事件;另一种是事件过滤,用系统本地API进行操作。前两天看了涛哥......
  • 自定义ConditionalOnXX注解(二)
    一、前言  在之前的文章《自定义ConditionalOnXX注解》中,介绍了Conditional注解的实现原理和实现自定义Conditional注解的基础方法,但是有些场景我们需要用一个Condition......
  • 通过自定义注解和反射实现策略模式
    通过自定义注解和反射实现策略模式​ 今天在写一个工单系统时,工单审批通过后,需要根据不同的工单类型选择不同的处理方式非常适合用自定义注解+反射来实现,研究了一番,......
  • 单元测试|unittest生成测试报告
    unittest生成测试报告测试报告为测试结果的统计即展示,是自动化测试不可或缺的一部分,利用unittest可以生成测试报告。使用第三方HTMLTestRunner执行测试用例集,生成网页版......