helium3@sina.com db091bc819 --备份 cursor 2 miesięcy temu
..
accounts db091bc819 --备份 cursor 2 miesięcy temu
config db091bc819 --备份 cursor 2 miesięcy temu
connector db091bc819 --备份 cursor 2 miesięcy temu
contract db091bc819 --备份 cursor 2 miesięcy temu
exchanges db091bc819 --备份 cursor 2 miesięcy temu
integration db091bc819 --备份 cursor 2 miesięcy temu
market db091bc819 --备份 cursor 2 miesięcy temu
performance db091bc819 --备份 cursor 2 miesięcy temu
utils db091bc819 --备份 cursor 2 miesięcy temu
README.md db091bc819 --备份 cursor 2 miesięcy temu
setup.ts db091bc819 --备份 cursor 2 miesięcy temu

README.md

测试文档

本项目包含完整的测试套件,包括单元测试、集成测试和性能测试。

目录结构

__tests__/
├── README.md                    # 测试说明文档
├── setup.ts                     # 测试环境设置
├── config/
│   └── testConfig.ts           # 测试配置文件
├── utils/
│   └── testHelpers.ts          # 测试辅助工具
├── connector/
│   └── futureConnector.test.ts # FutureConnector 单元测试
├── integration/
│   └── futureConnector.integration.test.ts # 集成测试
└── performance/
    └── futureConnector.performance.test.ts # 性能测试

测试类型

1. 单元测试 (Unit Tests)

  • 位置: __tests__/connector/futureConnector.test.ts
  • 目的: 测试各个方法的逻辑正确性
  • 特点: 使用 Mock 数据,不依赖真实 API
  • 运行: yarn test

2. 集成测试 (Integration Tests)

  • 位置: __tests__/integration/futureConnector.integration.test.ts
  • 目的: 测试与真实 Binance API 的集成
  • 特点: 需要有效的 API 密钥,会调用真实 API
  • 运行: yarn test:integration

3. 性能测试 (Performance Tests)

  • 位置: __tests__/performance/futureConnector.performance.test.ts
  • 目的: 测试 API 调用的性能和并发处理能力
  • 特点: 测试响应时间、内存使用、并发处理等
  • 运行: yarn test:performance

环境配置

1. 环境变量

创建 .env 文件并配置以下变量:

# API 配置
API_KEY=your_binance_api_key
API_SECRET=your_binance_api_secret

# 测试环境
NODE_ENV=development

2. 测试配置

测试配置在 __tests__/config/testConfig.ts 中管理,支持不同环境:

  • 开发环境: 启用所有测试类型
  • 生产环境: 禁用集成测试,只运行单元测试
  • CI/CD 环境: 根据 CI 环境调整配置

运行测试

基本命令

# 运行所有测试
yarn test

# 运行测试并监听文件变化
yarn test:watch

# 运行测试并生成覆盖率报告
yarn test:coverage

# 运行特定的测试文件
yarn test futureConnector.test.ts

# 运行特定的测试套件
yarn test --testNamePattern="Constructor"

高级命令

# 只运行单元测试
yarn test --testPathPattern="connector"

# 只运行集成测试
yarn test --testPathPattern="integration"

# 只运行性能测试
yarn test --testPathPattern="performance"

# 运行测试并输出详细日志
yarn test --verbose

# 运行测试并生成 JUnit 报告
yarn test --reporters=default --reporters=jest-junit

测试覆盖率

运行覆盖率测试:

yarn test:coverage

覆盖率报告将生成在 coverage/ 目录下,包括:

  • HTML 报告: coverage/lcov-report/index.html
  • LCOV 报告: coverage/lcov.info
  • 控制台输出: 显示总体覆盖率

覆盖率目标

  • 语句覆盖率: > 90%
  • 分支覆盖率: > 85%
  • 函数覆盖率: > 95%
  • 行覆盖率: > 90%

测试最佳实践

1. 编写测试

describe('MethodName', () => {
  test('should handle normal case', async () => {
    // 准备测试数据
    const mockData = TestHelpers.createMockAssets()

    // 设置 Mock
    mockClient.restAPI.method.mockResolvedValue({
      data: jest.fn().mockResolvedValue(mockData),
    })

    // 执行测试
    const result = await connector.method()

    // 验证结果
    expect(result).toBeDefined()
    expect(result).toHaveLength(2)
  })

  test('should handle error case', async () => {
    // 设置错误 Mock
    mockClient.restAPI.method.mockRejectedValue(new Error('API Error'))

    // 执行测试
    const result = await connector.method()

    // 验证错误处理
    expect(result).toEqual([])
  })
})

2. 使用测试辅助工具

import { TestHelpers } from '../utils/testHelpers'

// 生成测试数据
const mockAssets = TestHelpers.createMockAssets()
const mockPositions = TestHelpers.createMockPositions()

// 验证数据格式
TestHelpers.validateAssetData(asset)
TestHelpers.validatePositionData(position)

// 重试机制
const result = await TestHelpers.retry(
  () => connector.getAssetsInfo(),
  3, // 重试次数
  1000, // 重试间隔
)

3. 使用测试配置

import { getTestConfig, getSafeTestPrice } from '../config/testConfig'

const config = getTestConfig()
const safePrice = getSafeTestPrice('BTCUSDT', 'buy')

常见问题

1. API 密钥问题

问题: 集成测试失败,提示 API 密钥无效 解决:

  • 检查 .env 文件中的 API 密钥是否正确
  • 确认 API 密钥有足够的权限
  • 检查 API 密钥是否过期

2. 网络问题

问题: 测试超时或网络错误 解决:

  • 检查网络连接
  • 增加测试超时时间
  • 使用重试机制

3. 内存问题

问题: 性能测试内存使用过高 解决:

  • 检查是否有内存泄漏
  • 减少并发测试数量
  • 优化测试数据大小

4. 速率限制

问题: API 调用被限制 解决:

  • 减少并发调用数量
  • 增加调用间隔
  • 使用测试网 API

持续集成

GitHub Actions 配置

name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '18'
      - run: yarn install
      - run: yarn test:coverage
      - uses: codecov/codecov-action@v1

测试报告

测试完成后会生成以下报告:

  1. Jest 报告: 控制台输出
  2. 覆盖率报告: HTML 和 LCOV 格式
  3. 性能报告: 响应时间和内存使用统计

维护

更新测试

  1. 当添加新功能时,同时添加相应的测试
  2. 当修改现有功能时,更新相关测试
  3. 定期检查测试覆盖率,确保达到目标

测试数据管理

  1. 使用 TestHelpers 生成一致的测试数据
  2. 避免硬编码测试数据
  3. 定期更新模拟数据以匹配真实 API 响应

性能监控

  1. 定期运行性能测试
  2. 监控测试执行时间
  3. 设置性能基准并跟踪变化