feat: 初始化 Gitea Action 发送钉钉机器人消息项目
This commit is contained in:
111
tests/helpers/env-mock.js
Normal file
111
tests/helpers/env-mock.js
Normal file
@@ -0,0 +1,111 @@
|
||||
/**
|
||||
* 环境变量 Mock 工具
|
||||
* 用于在测试中模拟和管理环境变量
|
||||
*/
|
||||
|
||||
/**
|
||||
* Mock 环境变量
|
||||
*
|
||||
* @param {object} envVars - 要设置的环境变量
|
||||
* @returns {Function} 恢复函数
|
||||
*/
|
||||
export function mockEnvVars(envVars) {
|
||||
const originalEnv = {};
|
||||
|
||||
// 保存原始值
|
||||
for (const key in envVars) {
|
||||
originalEnv[key] = process.env[key];
|
||||
process.env[key] = envVars[key];
|
||||
}
|
||||
|
||||
// 返回恢复函数
|
||||
return () => {
|
||||
for (const key in envVars) {
|
||||
if (originalEnv[key] === undefined) {
|
||||
delete process.env[key];
|
||||
} else {
|
||||
process.env[key] = originalEnv[key];
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建标准的 Action 环境变量
|
||||
*
|
||||
* @param {object} overrides - 覆盖的环境变量
|
||||
* @returns {object} 环境变量对象
|
||||
*/
|
||||
export function createActionEnv(overrides = {}) {
|
||||
return {
|
||||
INPUT_WEBHOOK_URL: 'https://oapi.dingtalk.com/robot/send?access_token=test123',
|
||||
INPUT_MESSAGE_TYPE: 'text',
|
||||
INPUT_CONTENT: 'Test message',
|
||||
INPUT_TITLE: '',
|
||||
INPUT_AT_MOBILES: '',
|
||||
INPUT_AT_ALL: 'false',
|
||||
INPUT_LINK_URL: '',
|
||||
INPUT_PIC_URL: '',
|
||||
INPUT_BTN_ORIENTATION: '0',
|
||||
INPUT_SINGLE_TITLE: '',
|
||||
INPUT_SINGLE_URL: '',
|
||||
INPUT_BUTTONS: '',
|
||||
INPUT_FEED_LINKS: '',
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理所有 INPUT_ 开头的环境变量
|
||||
*
|
||||
* @returns {Function} 恢复函数
|
||||
*/
|
||||
export function clearActionEnv() {
|
||||
const originalEnv = {};
|
||||
const inputKeys = Object.keys(process.env).filter(key => key.startsWith('INPUT_'));
|
||||
|
||||
inputKeys.forEach(key => {
|
||||
originalEnv[key] = process.env[key];
|
||||
delete process.env[key];
|
||||
});
|
||||
|
||||
return () => {
|
||||
Object.assign(process.env, originalEnv);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建测试用的环境变量快照
|
||||
*
|
||||
* @returns {object} 当前环境变量的副本
|
||||
*/
|
||||
export function createEnvSnapshot() {
|
||||
return { ...process.env };
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复环境变量到指定快照
|
||||
*
|
||||
* @param {object} snapshot - 环境变量快照
|
||||
*/
|
||||
export function restoreEnvSnapshot(snapshot) {
|
||||
// 清除当前环境变量
|
||||
for (const key in process.env) {
|
||||
if (!(key in snapshot)) {
|
||||
delete process.env[key];
|
||||
}
|
||||
}
|
||||
|
||||
// 恢复快照中的环境变量
|
||||
Object.assign(process.env, snapshot);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建环境变量 Mock(别名函数)
|
||||
*
|
||||
* @param {object} envVars - 要设置的环境变量
|
||||
* @returns {Function} 恢复函数
|
||||
*/
|
||||
export function createEnvMock(envVars) {
|
||||
return mockEnvVars(envVars);
|
||||
}
|
||||
Reference in New Issue
Block a user