最近在继续开发之前的 Kindle UI 库,想到该写一下测试,于是决定使用 Mocha 的测试方案(尝试一些新东西)。
(此段由GPT生成👉)在开发过程中,保证代码质量和正确性是非常重要的。测试是达到这个目的的有效方法之一,特别是在 JavaScript 开发中。在 React 应用开发中,Mocha 和 Chai 是两个非常流行的测试框架。本文将介绍如何使用 Mocha 和 Chai 测试 React 应用。
为什么不用 react 官方推荐的 Jest 测试?
jest 最初是为测试 react app 设计的。相比 Jest, Mocha 具有更高的灵活性(后者可以且必须进行额外的配置,而前者开箱即用),可以在浏览器和 node 环境下运行,并且支持一些复杂的语句例如:
由于我的项目并非单个 react app 而是 monorepo,所以在 workspace 根目录使用 mocha 无疑是更好的选择。
安装依赖
Mocha 本身是不支持 JSX 的,所以我们要安装一些依赖:
注意:如果你在 workspace 根目录安装测试依赖(推荐的做法),记得添加 -W 参数。
配置 Mocha
在项目根目录创建一个 .mocharc.js 文件,内容如下:
在 /test/utils/setupBabel 目录创建一个 setupBabel.js 文件
配置 Babel
有了 babel, 我们可以使用 cjs 格式的测试文件而无需进行 "type": "module" 这种令人讨厌的设置。
测试
在 package.json 添加快捷脚本,此处请根据实际项目配置:
之后我们可以愉快地编写测试了。
关于 react-test-renderer 的更多用法,可以参考官方文档。
此处列举一些常见测试场景供参考:
改进
react 官方提供的测试库功能比较局限,例如,我们无法测试一个元素是否可见,也无法模拟用户操作页面。
所以,我们可以使用@testing-library/react来进行进一步改进。
注意,node 环境下没有 document 对象,需要使用 JSDom 这个库模拟一个。
先为 mocha 添加钩子:
更新测试代码: