Files
vtj/packages/utils/tests/loadScript.test.ts
“chenhuachun” c4b2d9aff1 test(base): 补充基础库及工具函数单元测试
- 为加密工具(MD5、RSA、base64、AES)添加完整加解密测试,支持中文及空字符串
- 新增日期格式化工具 dateFormat 的多种格式及类型测试
- lodash 工具函数增加类型判断、字符串转换、对象操作、深拷贝和合并等测试覆盖
- 添加 lz-string 压缩解压工具的多场景测试,含中文和特殊字符
- mitt 事件总线工具新增事件监听、触发、取消、多次触发及通配符测试
- 优化数字格式化工具 numberFormat 和 toFixed 的边界及四舍五入测试
- 添加 path-to-regexp 路径匹配及参数捕获相关测试
- Queue 队列工具新增任务顺序执行、去重、缓存及结果查询的全覆盖测试
- 增补正则校验工具(URL、邮箱、身份证、手机号、车牌)及正则常量匹配测试
- utils 包中基础工具 uid 生成唯一 ID 及版本号的测试补充
- 新增 browser-patch 中 addEventListener 补丁覆盖及调用测试
- clientInfo 工具丰富各主流浏览器、操作系统及移动设备的检测测试覆盖
- cookie 工具新增增删改查测试及多 cookie 互不影响的保证
- download 工具中 URL 下载及 Blob 下载功能测试初始化补充保证运行环境兼容性
2026-06-15 11:06:14 +08:00

60 lines
1.6 KiB
TypeScript

import { describe, it, expect, vi } from 'vitest';
import { loadScript } from '../src';
vi.mock('load-script', () => {
const mockFn = (
src: string,
opts: any,
cb: (err: Error | null, script?: HTMLScriptElement) => void
) => {
cb(null, document.createElement('script'));
};
return { default: vi.fn(mockFn) };
});
describe('loadScript 工具', () => {
it('应成功加载脚本', async () => {
const result = await loadScript('https://example.com/test.js');
expect(result).toBeUndefined();
});
it('应支持 library 参数返回全局变量', async () => {
(window as any).MyLib = { version: '1.0' };
const result = await loadScript('https://example.com/lib.js', {
library: 'MyLib'
});
expect(result).toEqual({ version: '1.0' });
});
it('应处理加载失败', async () => {
const loadModule = await import('load-script');
(loadModule.default as any).mockImplementationOnce(
(src: string, opts: any, cb: (err: Error | null) => void) => {
cb(new Error('load failed'));
}
);
await expect(loadScript('https://example.com/fail.js')).rejects.toThrow(
'load failed'
);
});
it('应支持 async 选项', async () => {
const loadModule = await import('load-script');
(loadModule.default as any).mockImplementationOnce(
(
src: string,
opts: any,
cb: (err: Error | null, script?: HTMLScriptElement) => void
) => {
cb(null, document.createElement('script'));
}
);
const result = await loadScript('https://example.com/async.js', {
async: true
});
expect(result).toBeUndefined();
});
});