@ jest/ source- map (英语)
应用源地图来堆叠痕迹,所以一个失败的测试点在您写的代码上而不是在代码Jest运行上.
这是杰斯特内部使用的模块. 它的存在是因为 --enable-source-maps 财务报告和审定财务报表 module.setSourceMapsSupport() 不覆盖编译的代码 vm,这是杰斯评价测试文件的方式,并且因为节点无法注册一个文件名的地图——杰斯服务地图来自自己的变换管道,而不是来自 sourceMappingURL 磁盘上的评论.
安装
$ npm install --save @jest/source-map
API 密码
SourceMapSupport#install(sourceMaps?: SourceMapRegistry | null, options?: SourceMapSupportInstallOptions): void
替换 Error.prepareStackTrace 在当前范围内,读取 .stack 在任何错误上使框架与原始来源相对应. jest-runner 拥有每个工人一个实例,每个测试文件安装一次.
sourceMaps 将已转换的文件映射到 .map 文件 Jest 写入了它的变换缓存——在 Jest 内部, runtime.getSourceMaps()编辑 sources 内有 URL 语义的地图解析度与已转换的文件相对,而不是与地图本身的位置相对. 登记册中缺失的文件返回到 sourceMappingURL 对文件本身进行评论,该文件涵盖预先编译的输出,用于运送自己的地图.
import {SourceMapSupport} from '@jest/source-map';
const sourceMapSupport = new SourceMapSupport();
sourceMapSupport.install(new Map([['/build/app.js', '/cache/app.js.map']]));
new Error('boom').stack;
// Error: boom
// at greet (/src/app.ts:12:9)
物料在过程的寿命期间会被安装,每个调用交换都会被安装在新的登记册中. 无事被还原,是故意的:在测试完成后所抛出的一个错误——一个出错的计时器,一个浮出水面的承诺——是用户最难安排的时间,否则它就会在被转换的文件中报告一个位置.
无法解析的地图通过 console.warn; 通过 {suppressWarnings: true} 关掉它.
SourceMapSupport#getCallsite(level: number, sourceMaps?: SourceMapRegistry | null): CallSite
返回一个已重映射 CallSite, (中文(简体) ), level 在呼叫器上方的帧。 用于 --testLocationInResults。将其解析的地图与已安装的处理器共享,因此 .map 文件读取一次.
getCallsite(level: number, sourceMaps?: SourceMapRegistry | null): CallSite
折旧的自由功能别名 SourceMapSupport#getCallsite。 。 。 .
SourceMapRegistry
Map<string, string> ——将文件路径转换为源地图路径.
为可读性选择函数名称,而非光谱
框架以源地图命名 name 在画框 拥有 立场。 这个名字是标识符 调用 而不是附加功能,所以每个框架都用其线上的呼声附加注释:
at Object.toBeTruthy (assertionCount.test.js:12:17)
at Object.setTimeout (inside.js:9:3)
光谱校正读取名称 电话 换成位置。 这是什么 [email protected] 切换到,它会折叠上面的帧到 Object.<anonymous>,因为V8对于模块级框架没有自己的名称. 无论是哪种方式,位置都是一样的——只有名字不同,并且只有V8不能命名帧的地方.
这个包对读取测试失败的选择,所以保留了注释. 如果你需要谱面语义, getCallsite 手举起 CallSite 你可以自己地图.