structure.js×3/structure_dz.js/tradeEditV2.js/tradeEditGroup.js的setExtendInfo里同一行式:靠indexOf("%")>0嗅探值是否已带%,决定原样展示还是×100加%。抽为app/trade/percentColumnText.js纯函数(UMD,jest可测),表达式逐字符等价——含>0而非>=0、空值回退ColumnDefaultValue、回退源也无值时NaN%等历史行为全部被7个特征测试冻结(TDD:测试先红后绿)。四个页面cshtml在tradeHelper后补脚本序;jest覆盖率清单纳入。fe-tests 326/326通过
56 lines
2.2 KiB
JavaScript
56 lines
2.2 KiB
JavaScript
/**
|
||
* jest.config.js — 前端测试配置
|
||
* ============================================================================
|
||
* 运行方式:cd YLErpWeb/fe-tests && npx jest
|
||
*
|
||
* 设计要点:
|
||
* - testEnvironment: jsdom — 模拟浏览器环境(jQuery / Vue 组件测试需要)
|
||
* - testMatch: 只跑 *.test.js,不跑 _shim_run.js / guard_arch.js
|
||
* - collectCoverage: 默认不开(影响速度),用 --coverage 手动开启
|
||
* - coverageThreshold: 新代码覆盖率门槛,逐步提高
|
||
* - moduleDirectories: 让测试文件能 require('jquery') 等npm包
|
||
* ============================================================================
|
||
*/
|
||
module.exports = {
|
||
// 保持 node 环境:部分测试文件自行 require('jsdom') 搭建 DOM,
|
||
// 若改为 jsdom 环境会与之冲突(TextEncoder 未定义等问题)。
|
||
testEnvironment: 'node',
|
||
|
||
// 只匹配 *.test.js
|
||
testMatch: ['**/*.test.js'],
|
||
|
||
// 模块查找路径(node_modules + wwwroot/Scripts 便于 require 源文件)
|
||
moduleDirectories: ['node_modules', '../wwwroot/Scripts'],
|
||
|
||
// 覆盖率配置(--coverage 时生效)
|
||
// 已知问题:源码在 rootDir(fe-tests) 之外,babel 提供器因 transform:{} 无插桩器、
|
||
// v8 提供器对 rootDir 逃逸路径无法归因(jest 29.7 实测,含 roots/绝对路径变体),
|
||
// 覆盖率表恒为 0 且门槛不触发。清单仍保留以固化意图,真实修复需重构 rootDir。
|
||
collectCoverageFrom: [
|
||
'../wwwroot/Scripts/app/swaptrade/swapCalc.js',
|
||
'../wwwroot/Scripts/app/swaptrade/unwindBondCalc.js',
|
||
'../wwwroot/Scripts/app/swaptrade/swapPricePrecisionHelper.js',
|
||
'../wwwroot/Scripts/app/trade/percentColumnText.js',
|
||
'../wwwroot/Scripts/fast/fastVue.base.js',
|
||
// 逐步加入更多文件
|
||
],
|
||
|
||
coverageDirectory: 'coverage',
|
||
|
||
// 覆盖率门槛(初始宽松,逐步收紧)
|
||
coverageThreshold: {
|
||
global: {
|
||
branches: 40,
|
||
functions: 50,
|
||
lines: 50,
|
||
statements: 50,
|
||
},
|
||
},
|
||
|
||
// 不转换 node_modules(本项目 JS 是原生 ES5,不需要 babel)
|
||
transform: {},
|
||
|
||
// verbose 输出
|
||
verbose: false,
|
||
};
|