Open xiaochengzi6 opened 1 year ago
针对与 react-hook的测试 所使用的是 jest 测试框架, 使用 react-testing-library可以测试 react 关于测试环境和RTL的介绍可以看这篇文章
react-hook
react-testing-library
RTL
主要是针对 ui 的测试,ui 相当于已经确定了使用场景 我们只需要从两个方面来测试就行,一个是最终用户站在用户的角度上测试不需要关注代码细节,二是开发人员对于需要参数的组件我们要针对参数进行测试,这样测试应该能满足绝大部分的使用场景确保组件不会出现过多的 bug
ui
最终用户
开发人员
在使用 RTL 包对组件进行测试的时候主要关注点就两个
hook 测试没有太多的复杂性,就是针对 hook 的参数和返回值进行测试 详细教程
最经常使用的有 renderHook、act 使用 renderHook 去渲染 hook 通过 act 函数去改变状态或调用 hook 抛出的方法 例如:
renderHook
act
import { act, renderHook } from '@testing-library/react-hooks'; import useMap from '../index'; const setUp = (initialMap?: Iterable<[any, any]>) => renderHook(() => useMap(initialMap)); //... it('test_1', () => { const {result} = setUp() // ... })
renderHook 的参数有两个 render && options 在测试 hook 时 render 通常时一个函数返回 hook 可以将其简单的看成一个组件,为了方便在不同测试套件中使用需要封装一个 setUp 的函数,主要用于初始化 比如:const setUp = (initialMap?: Iterable<[any, any]>) => renderHook(() => useMap(initialMap))
render
options
setUp
const setUp = (initialMap?: Iterable<[any, any]>) => renderHook(() => useMap(initialMap))
renderHook 返回三个值
result
unmount
通常会在 act 函数中去执行这些方法 关于这方面的测试示例推荐看 ahook 中的源码里面写的很详细
对于一些需要传参的 hook 要额外注意,hook 的使用者是开发人员,所以将会假定传入的参数的类型一定是相匹配的,主要针对的就是 hook 参数类型不确定 或者 传入的是函数类型的参数 要注意,关于测试这个实在没有啥通用性介绍想要深入只有不停的写测试和看测试示例才行。
hook
参考文章和仓库
react 测试
针对与
react-hook
的测试 所使用的是 jest 测试框架, 使用react-testing-library
可以测试 react 关于测试环境和RTL
的介绍可以看这篇文章主要是针对
ui
的测试,ui 相当于已经确定了使用场景 我们只需要从两个方面来测试就行,一个是最终用户
站在用户的角度上测试不需要关注代码细节,二是开发人员
对于需要参数的组件我们要针对参数进行测试,这样测试应该能满足绝大部分的使用场景确保组件不会出现过多的 bug在使用
RTL
包对组件进行测试的时候主要关注点就两个hook 测试
hook 测试没有太多的复杂性,就是针对 hook 的参数和返回值进行测试 详细教程
最经常使用的有
renderHook
、act
使用renderHook
去渲染 hook 通过act
函数去改变状态或调用 hook 抛出的方法 例如:renderHook
的参数有两个render
&&options
在测试 hook 时 render 通常时一个函数返回 hook 可以将其简单的看成一个组件,为了方便在不同测试套件中使用需要封装一个setUp
的函数,主要用于初始化 比如:const setUp = (initialMap?: Iterable<[any, any]>) => renderHook(() => useMap(initialMap))
renderHook
返回三个值result
: 执行后的结果render
: 用于组件重新渲染unmount
:卸载组件时调用的函数通常会在
act
函数中去执行这些方法 关于这方面的测试示例推荐看 ahook 中的源码里面写的很详细对于一些需要传参的
hook
要额外注意,hook 的使用者是开发人员,所以将会假定传入的参数的类型一定是相匹配的,主要针对的就是 hook 参数类型不确定 或者 传入的是函数类型的参数 要注意,关于测试这个实在没有啥通用性介绍想要深入只有不停的写测试和看测试示例才行。参考文章和仓库