/** * _shim_run.js — 不依赖 jest 的轻量测试运行器(仅用于在沙箱内验证测试文件逻辑)。 * 本机请用 jest:cd YLErpWeb/fe-tests && npm i && npm test */ let passed = 0; let failed = 0; const failures = []; function fmt(v) { return typeof v === 'object' ? JSON.stringify(v) : String(v); } function makeExpect(actual) { return { toBe(expected) { if (Object.is(actual, expected)) { passed++; } else { failed++; failures.push('toBe: expected ' + fmt(expected) + ' got ' + fmt(actual)); } }, toBeDefined() { if (actual !== undefined && actual !== null) { passed++; } else { failed++; failures.push('toBeDefined: got ' + fmt(actual)); } }, toBeLessThanOrEqual(n) { if (actual <= n) { passed++; } else { failed++; failures.push('toBeLessThanOrEqual: ' + fmt(actual) + ' <= ' + n + ' failed'); } }, toBeGreaterThan(n) { if (actual > n) { passed++; } else { failed++; failures.push('toBeGreaterThan: ' + fmt(actual) + ' > ' + n + ' failed'); } }, toBeGreaterThanOrEqual(n) { if (actual >= n) { passed++; } else { failed++; failures.push('toBeGreaterThanOrEqual: ' + fmt(actual) + ' >= ' + n + ' failed'); } }, }; } global.expect = (actual) => makeExpect(actual); global.describe = (name, fn) => { fn(); }; global.test = (name, fn) => { try { fn(); } catch (e) { failed++; failures.push(name + ': ' + e.message); } }; global.it = global.test; require('./swapCalc.test.js'); require('./otcformat.test.js'); require('./parity.test.js'); console.log('\n==== RUNNER (jest-shim) ===='); console.log('PASS=' + passed + ' FAIL=' + failed); failures.forEach((f) => console.log(' ✗ ' + f)); console.log(failures.length ? 'RESULT: RED' : 'RESULT: GREEN'); process.exit(failed > 0 ? 1 : 0);