JavaScript单元测试核心是用独立可重复代码验证函数行为,推荐Vitest工具,强调代码可测性、清晰用例和Mock隔离。

JavaScript 单元测试的核心是:用独立、可重复的代码验证函数或模块的行为是否符合预期。关键不在于框架多炫,而在于写得清楚、跑得稳定、改得安心。
选一个轻量靠谱的测试工具
推荐从 Vitest 入手——它专为 Vite 生态设计,启动快、API 简洁、原生支持 ES 模块和 TypeScript,配置几乎为零。想兼容老项目也可用 Jest,但 Vitest 更现代、更轻、更贴近当前开发习惯。
安装示例(Vitest):
npm install -D vitest
在 package.json 中加一条脚本:
立即学习“Java免费学习笔记(深入)”;
"test": "vitest"
给函数写可测的代码
单元测试效果好不好,一半取决于代码本身是否“友好”。注意三点:
函数尽量只做一件事,输入明确、输出确定(避免依赖全局变量、Date.now()、Math.random() 等不确定因素) 副作用(如发请求、改 DOM)抽离出去,主逻辑保持纯函数特性 异步操作用 Promise 封装,方便用 await 或 async/await 测试
比如这个加法函数就很容易测:
export function add(a, b) { return a + b; }
用 describe / it 写清晰的测试用例
每个测试文件对应一个被测模块,用 describe 描述功能模块,用 it(或 test)描述具体行为。断言推荐用 Vitest 内置的 expect:
import { add } from './math.js';import { describe, it, expect } from 'vitest';describe('add', () => { it('returns sum of two numbers', () => { expect(add(2, 3)).toBe(5); expect(add(-1, 1)).toBe(0); });});
常见断言还有:toEqual(深比较对象)、toThrow(检查报错)、toBeCalled(验证 mock 函数调用)等。
模拟外部依赖(Mock)让测试真正隔离
测试某个函数时,不希望它真的调用 API 或读取 localStorage。这时要用 vi.mock() 或 vi.fn() 模拟行为:
用 vi.fn() 创建模拟函数,可设定返回值、记录调用次数 用 vi.mock('./api.js') 替换整个模块,让它返回假数据 测试完记得用 vi.clearAllMocks() 重置状态,避免测试间干扰
例如模拟一个 fetch 调用:
global.fetch = vi.fn(() => Promise.resolve({ json: () => Promise.resolve({ id: 1 }) }));it('fetches user data', async () => { const data = await getUser(1); expect(data.id).toBe(1); expect(fetch).toHaveBeenCalledTimes(1);});
基本上就这些。不用追求覆盖率 100%,先从核心逻辑、边界条件(空值、负数、异常输入)和关键分支开始写。测试写顺了,重构才敢动,上线才踏实。
以上就是Javascript如何进行单元测试?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543524.html
微信扫一扫
支付宝扫一扫