yourname 1e442f9f2c chore(mini-ui-packages): 统一添加rimraf依赖和构建脚本 3 недель назад
..
src 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
testing bb8a628549 feat(story): 完成故事016.009 - React图表组件封装 3 недель назад
tests 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
README.md 6b02942e7f feat(mini): 创建共享测试工具包mini-testing-utils 4 недель назад
jest-preset.cjs 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
jest-preset.js 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
jest-preset.json 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
jest-preset.ts 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
jest.config.cjs 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
package.json 1e442f9f2c chore(mini-ui-packages): 统一添加rimraf依赖和构建脚本 3 недель назад
setup.ts 2ec98bc86a fix(testing): 修复mini-testing-utils架构问题并完成故事014.003 3 недель назад
tsconfig.json 6b02942e7f feat(mini): 创建共享测试工具包mini-testing-utils 4 недель назад

README.md

@d8d/mini-testing-utils

Taro小程序测试工具包,为所有mini UI包提供统一的测试工具函数和mock配置。

安装

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中:

module.exports = {
  // 使用预设配置
  preset: '@d8d/mini-testing-utils/jest-preset',

  // 可以覆盖或扩展预设配置
  testMatch: [
    '<rootDir>/tests/**/*.test.{ts,tsx}'
  ]
}

2. 手动导入测试工具

在测试文件中:

import {
  renderTaroComponent,
  setupTestEnv,
  setupTaroMocks,
  createTaroApiMocks,
  screen,
  fireEvent,
  waitFor
} from '@d8d/mini-testing-utils'

// 设置测试环境
beforeEach(() => {
  setupTestEnv()
  setupTaroMocks()
})

// 渲染Taro组件
test('renders Taro component', () => {
  const { getByText } = renderTaroComponent(<View>Hello</View>)
  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中使用:

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. 更新测试导入语句

开发

# 安装依赖
pnpm install

# 构建
pnpm build

# 运行测试
pnpm test

# 类型检查
pnpm typecheck

许可证

MIT