# @d8d/mini-testing-utils Taro小程序测试工具包,为所有mini UI包提供统一的测试工具函数和mock配置。 ## 安装 ```bash pnpm add -D @d8d/mini-testing-utils ``` ## 功能 - **测试环境设置**: `setupTestEnv` - 设置Taro测试环境变量和全局对象 - **组件渲染工具**: `renderTaroComponent` - 封装`@testing-library/react`的render函数,支持Taro组件 - **Taro组件Mock**: 完整的Taro组件mock配置,包含View、Text、Button等所有组件 - **Taro API Mock**: 提供Taro API的jest mock函数 - **Jest预设配置**: 统一的Jest配置预设,包含moduleNameMapper和transform设置 - **Mock文件**: 样式和文件导入的mock配置 ## 使用方法 ### 1. 在Jest配置中使用预设 在您的mini UI包的`jest.config.cjs`中: ```javascript module.exports = { // 使用预设配置 preset: '@d8d/mini-testing-utils/jest-preset', // 可以覆盖或扩展预设配置 testMatch: [ '/tests/**/*.test.{ts,tsx}' ] } ``` ### 2. 手动导入测试工具 在测试文件中: ```typescript import { renderTaroComponent, setupTestEnv, setupTaroMocks, createTaroApiMocks, screen, fireEvent, waitFor } from '@d8d/mini-testing-utils' // 设置测试环境 beforeEach(() => { setupTestEnv() setupTaroMocks() }) // 渲染Taro组件 test('renders Taro component', () => { const { getByText } = renderTaroComponent(Hello) expect(getByText('Hello')).toBeInTheDocument() }) // 使用Taro API mock test('calls Taro API', () => { const taroMocks = createTaroApiMocks() taroMocks.showToast('Test message') expect(taroMocks.showToast).toHaveBeenCalledWith('Test message') }) ``` ### 3. 使用setup文件 在Jest配置的`setupFilesAfterEnv`中使用: ```javascript module.exports = { // ...其他配置 setupFilesAfterEnv: [ '@d8d/mini-testing-utils/setup' ] } ``` ## 导出路径 包提供以下导出路径: - `@d8d/mini-testing-utils` - 主入口,包含所有测试工具函数 - `@d8d/mini-testing-utils/testing` - 测试配置和mock文件导出 - `@d8d/mini-testing-utils/jest-preset` - Jest预设配置 - `@d8d/mini-testing-utils/setup` - 测试setup文件 ## 模块导出兼容性 包已配置TypeScript源文件与JavaScript运行时的导出兼容性: - **开发时**: 直接导入TypeScript源文件,支持类型检查和源码调试 - **运行时**: 导入编译后的JavaScript文件,确保兼容性 - **类型定义**: 自动生成`.d.ts`类型定义文件 ## 与现有mini项目集成 此包基于现有mini项目的测试基础设施(`mini/tests/setup.ts`)构建,确保与现有测试模式兼容。 ## 更新现有页面包 要更新现有页面包使用此测试工具包: 1. 添加依赖:`pnpm add -D @d8d/mini-testing-utils` 2. 更新Jest配置使用预设 3. 移除重复的mock配置和测试工具函数 4. 更新测试导入语句 ## 开发 ```bash # 安装依赖 pnpm install # 构建 pnpm build # 运行测试 pnpm test # 类型检查 pnpm typecheck ``` ## 许可证 MIT