Jest测试中图片、Base64编码数据的存放位置咨询
解决测试用例中Base64图片可读性问题的方案
你可以通过存放实体图片文件+在测试代码中动态转Base64的方式解决这个问题,既保持代码整洁,又能满足测试需求,具体步骤如下:
1. 规划测试资源目录
在你的测试目录下创建一个__fixtures__文件夹(这是Jest生态中约定俗成的测试资源存储目录,Jest不会将其识别为测试文件执行),将用于测试的JPG图片(比如命名为test-image.jpg)放入该文件夹。
2. 在测试代码中读取图片并转换为Base64
使用Node.js内置的fs和path模块,同步读取图片文件并转换为Base64编码字符串,替换原测试用例中的占位内容:
const fs = require('fs'); const path = require('path'); const { detectBodyMime } = require('../../../src/common/http_utils.js'); test("detectsBase64EncodedImage", (done) => { // 拼接测试图片的绝对路径(跨平台兼容) const imageFilePath = path.join(__dirname, '__fixtures__', 'test-image.jpg'); // 读取图片并直接转为Base64编码 const content = fs.readFileSync(imageFilePath, { encoding: 'base64' }); detectBodyMime(content, (err, mime, extension) => { expect(err).toBeNull(); expect(mime).toBe('image/jpeg'); expect(extension).toBe('jpg'); done(); }); });
额外注意事项
- 若需测试其他类型的文件(如PNG图片、JSON文本等),只需将对应文件放入
__fixtures__目录,重复上述读取逻辑即可 - 使用
path.join拼接路径可避免Windows和Linux平台的路径分隔符差异问题 - 测试中使用
readFileSync是安全的:仅在测试用例初始化阶段同步读取资源,不会阻塞后续异步的detectBodyMime调用
内容的提问来源于stack exchange,提问作者Dimitrios Desyllas
相关产品推荐
相关产品推荐

