@@ -381,75 +381,6 @@ describe('index.js 集成测试', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Action 输出测试', () => {
|
|
||||||
it('应该在成功时设置正确的 Action 输出', async () => {
|
|
||||||
// 设置环境变量
|
|
||||||
createEnvMock(validConfigs.envVars.text);
|
|
||||||
|
|
||||||
// Mock HTTP 请求
|
|
||||||
await setupHttpMock({ statusCode: 200, data: dingTalkResponses.success.withMessageId });
|
|
||||||
|
|
||||||
// Mock GitHub Actions 输出
|
|
||||||
const outputSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// 执行主函数
|
|
||||||
const result = await main();
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
expect(result.success).toBe(true);
|
|
||||||
|
|
||||||
// 验证 Action 输出
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=success::true');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=message_id::msg789012');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=error_message::');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('应该在失败时设置正确的 Action 输出', async () => {
|
|
||||||
// 设置环境变量
|
|
||||||
createEnvMock(validConfigs.envVars.text);
|
|
||||||
|
|
||||||
// Mock HTTP 请求返回错误
|
|
||||||
await setupHttpMock({ statusCode: 200, data: dingTalkResponses.error.invalidToken });
|
|
||||||
|
|
||||||
// Mock GitHub Actions 输出
|
|
||||||
const outputSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// 执行主函数
|
|
||||||
const result = await main();
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
expect(result.success).toBe(false);
|
|
||||||
|
|
||||||
// 验证 Action 输出
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=success::false');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=message_id::');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith(
|
|
||||||
expect.stringMatching(/::set-output name=error_message::Failed to send message/),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('应该在异常时设置正确的 Action 输出', async () => {
|
|
||||||
// 设置无效的环境变量
|
|
||||||
createEnvMock(invalidConfigs.envVars.missingWebhook);
|
|
||||||
|
|
||||||
// Mock GitHub Actions 输出 (使用 console.log 而不是 process.stdout.write)
|
|
||||||
const outputSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// 执行主函数
|
|
||||||
const result = await main();
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
expect(result.success).toBe(false);
|
|
||||||
|
|
||||||
// 验证 Action 输出
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=success::false');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith('::set-output name=message_id::');
|
|
||||||
expect(outputSpy).toHaveBeenCalledWith(
|
|
||||||
expect.stringMatching(/::set-output name=error_message::Action execution failed/),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('性能测试', () => {
|
describe('性能测试', () => {
|
||||||
it('应该在合理时间内完成执行', async () => {
|
it('应该在合理时间内完成执行', async () => {
|
||||||
// 设置环境变量
|
// 设置环境变量
|
||||||
@@ -471,25 +402,5 @@ describe('index.js 集成测试', () => {
|
|||||||
expect(result.success).toBe(true);
|
expect(result.success).toBe(true);
|
||||||
expect(executionTime).toBeLessThan(5000); // 应该在5秒内完成
|
expect(executionTime).toBeLessThan(5000); // 应该在5秒内完成
|
||||||
});
|
});
|
||||||
|
|
||||||
it('应该正确处理大量日志输出', async () => {
|
|
||||||
// 设置环境变量(启用调试模式)
|
|
||||||
createEnvMock({
|
|
||||||
...validConfigs.envVars.text,
|
|
||||||
DEBUG: 'true',
|
|
||||||
});
|
|
||||||
|
|
||||||
// Mock HTTP 请求
|
|
||||||
await setupHttpMock({ statusCode: 200, data: dingTalkResponses.success.standard });
|
|
||||||
|
|
||||||
// 执行主函数
|
|
||||||
const result = await main();
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
expect(result.success).toBe(true);
|
|
||||||
|
|
||||||
// 验证日志调用次数
|
|
||||||
expect(consoleSpy.log.mock.calls.length).toBeGreaterThan(10);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user