前端利用github copilot辅助编写单元测试

一、前言

贴主对单测了解并不深入,本帖用于记录小白利用ai辅助编写单测过程和中途遇到的一些坑,希望能帮到大家

二、框架

  • 本次单测采用jest框架,因为jest的使用人数最多,社区资源最为丰富,前人的经验十分宝贵,后续如果vitest发展较好,也可以无痛进行迁移(vitest官方说二者使用体验基本一致)
  • ai方面采用github copilot,在vscode中安装插件并登录github账号即可,现在处于免费阶段,一个月一个账号限制50条消息(一个邮箱就可以注册一个号所以是完全免费)

三、配置

下面是一些基础配置,如果有缺失需要自己补充

package.json

json 复制代码
"scripts": {
    "test": "jest",
    "test:coverage": "jest --coverage"
 },

jest.config.js

css 复制代码
module.exports = {
 preset: 'ts-jest',
 testEnvironment: 'jsdom',
 transform: {
   '^.+\\.tsx?$': 'ts-jest',
 },
 moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
};

tsconfig.json

compilerOptions的types数组中加入"jest"

四、使用

选择copilot插件,打开需要编写单测的文件a.ts

全选a文件的内容然后在ai聊天框内输入生成单元测试即可,然后按照ai生成的步骤去创建对应文件贴入测试代码

完成后运行pnpm test:coverage,若存在报错可以直接复制报错信息扔给ai,ai无法解决则需要人工解决, 解决完报错后即可看到覆盖率报告,若测试代码较多可能无法一次全覆盖,需要告知ai多少行未被覆盖,进行二次生成

五、踩坑经验

  • 不要使用定时器,jest无法识别,会直接给里面的test跳过算通过
  • 有部分测试用例存在预期结果和实际结果不符合仍然显示通过,建议调整断言函数与应有结果不符合再次运行检查正确性
  • 不要在测试代码中使用try catch,无法识别
  • 红色是完全未覆盖到的部分,黄色是未覆盖的分支,解决完这部分才可以看到黄色的未覆盖到的分支,有些代码行有涉及覆盖但仍然被黄色标出说明该行有多种情况,已编写的单测用例没覆盖全,例如arr?.map涉及arr为Array型或undefined型
  • 想要看到某一个运行中的值建议使用console.error然后运行test脚本后再控制台中观察红色报错部分,console.log也可以但打印出来是白色的,容易被庞大信息流冲掉看不到
  • 外部导入的其他函数需要在jest中重新模拟
  • 单元测试不允许出现ts错误,如果有会运行不下去,如果要模拟异常情况可以使用断言(as any)避免ts报错
  • 测试类的时候遇到报错 xxx is not a constructor 参考www.javascriptcn.com/post/677b2b...
相关推荐
一晌小贪欢1 天前
Python 测试利器:使用 pytest 高效编写和管理单元测试
python·单元测试·pytest·python3·python测试
汽车仪器仪表相关领域1 天前
MTX-A 模拟废气温度(EGT)计 核心特性与车载实操指南
网络·人工智能·功能测试·单元测试·汽车·可用性测试
卓码软件测评1 天前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
Apifox.2 天前
Apifox 1 月更新|MCP 调试、测试套件、测试报告重构、网络信息查看、Hoppscotch 导入
前端·人工智能·测试工具·单元测试·团队开发
卓码软件测评2 天前
第三方移动应用测试机构:【移动应用性能测试:使用LoadRunner的Mobile Application - HTTP/HTML协议】
测试工具·ci/cd·性能优化·单元测试·测试用例
汽车仪器仪表相关领域2 天前
70A大电流+三档电压可调:Midtronics MSP-070系列电源充电器汽车ECU刷新与电池维护实战全解
人工智能·功能测试·单元测试·汽车·可用性测试
我送炭你添花2 天前
Pelco KBD300A 模拟器:18. 按依赖顺序 + 复杂度由低到高逐步推进pytest单元测试
python·单元测试·log4j·pytest
CodeCraft Studio3 天前
Parasoft是什么?Parasoft自动化测试工具与解决方案:实现规模化应用
自动化测试·测试工具·单元测试·静态测试·parasoft·嵌入式软件测试·软件安全合规
卓码软件测评3 天前
【第三方双重资质软件测试机构:测试RESTful API和SOAP Web Services:LoadRunner协议选择和脚本编写】
测试工具·ci/cd·性能优化·单元测试·测试用例·restful
别会,会就是不问3 天前
Junit4下Mockito包的使用
java·junit·单元测试