如何在test.for中提取对象的filename属性作为测试名称
如何在test.for中提取对象的filename属性作为测试名称
这个问题我之前调试测试用例时也碰到过,默认显示整个对象的测试名确实又长又难读,看着头疼!其实解决起来很简单,只要调整测试名称的生成方式,动态提取你需要的filename属性就行。
你原来的代码里用了'Filename %s'作为测试名称模板,这里的%s会直接把整个expected对象塞进去,所以才会显示一大串冗余内容。我们可以改成两种方式:
方式一:用函数生成自定义测试名(兼容性最好)
把测试名称的字符串换成一个函数,这个函数接收每个测试用例的expected对象,返回只包含filename的字符串,这样测试名称就会变得简洁清晰:
describe("ExtractDateFromText", () => { test.for(scannedReceiptText)((expected) => `Filename ${expected.filename}`, async (expected) => { const dateResult = dateFromRawData(expected.ocrResponse); // 这里可以添加你的断言逻辑 }); });
方式二:用对象属性占位符(部分测试框架支持,比如Vitest)
如果你的测试框架支持对象属性占位符(比如Vitest的test.for),可以直接在字符串模板里用$filename来引用对象的属性,写法更简洁:
describe("ExtractDateFromText", () => { test.for(scannedReceiptText)('Filename $filename', async (expected) => { const dateResult = dateFromRawData(expected.ocrResponse); }); });
两种方法都能帮你把测试名改成只显示filename,选哪种看你用的测试框架支持情况就好~
内容来源于stack exchange
相关产品推荐
相关产品推荐

