|
|
2 months ago | |
|---|---|---|
| .. | ||
| accounts | 2 months ago | |
| config | 2 months ago | |
| connector | 2 months ago | |
| contract | 2 months ago | |
| exchanges | 2 months ago | |
| integration | 2 months ago | |
| market | 2 months ago | |
| performance | 2 months ago | |
| utils | 2 months ago | |
| README.md | 2 months ago | |
| setup.ts | 2 months ago | |
本项目包含完整的测试套件,包括单元测试、集成测试和性能测试。
__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 # 性能测试
__tests__/connector/futureConnector.test.tsyarn test__tests__/integration/futureConnector.integration.test.tsyarn test:integration__tests__/performance/futureConnector.performance.test.tsyarn test:performance创建 .env 文件并配置以下变量:
# API 配置
API_KEY=your_binance_api_key
API_SECRET=your_binance_api_secret
# 测试环境
NODE_ENV=development
测试配置在 __tests__/config/testConfig.ts 中管理,支持不同环境:
# 运行所有测试
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/ 目录下,包括:
coverage/lcov-report/index.htmlcoverage/lcov.infodescribe('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([])
})
})
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, // 重试间隔
)
import { getTestConfig, getSafeTestPrice } from '../config/testConfig'
const config = getTestConfig()
const safePrice = getSafeTestPrice('BTCUSDT', 'buy')
问题: 集成测试失败,提示 API 密钥无效 解决:
.env 文件中的 API 密钥是否正确问题: 测试超时或网络错误 解决:
问题: 性能测试内存使用过高 解决:
问题: API 调用被限制 解决:
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
测试完成后会生成以下报告:
TestHelpers 生成一致的测试数据