我在Nodejs中创建了一个函数:
const mmm = require('mmmagic');
const mime = require('mime-types');
const {Buffer} = require("node:buffer");
const detectBodyMime = (body,callback) => {
let buffer = isBase64(body)?Buffer.from(body,'base64'):Buffer.from(body);
const magic = new mmm.Magic(mmm.MAGIC_MIME_TYPE);
magic.detect(buffer, function(err, result) {
if (err) { return callback(err); }
if(result == 'text/plain') {
try {
let text = buffer.toString();
if (text.codePointAt(0) === 0xFEFF) { // UTF8 BOM
text = text.substring(1);
}
JSON.parse(text);
return callback(null,'application/json','json',buffer);
}catch(e){
// Do nothing keep it silence we need to just verify that content is Json
}
}
return callback(null,result,mime.extension(result),buffer);
});
}
module.exports={
detectBodyMime
}
我做了一些测试:
const {detectBodyMime} = require('../../../src/common/http_utils.js');
test("detectsBase64EncodedImage",(done)=>{
const content = // Populate data
detectBodyMime(content,(err,mime,extention)=>{
expect(mime).toBe('image/jpeg');
expect(extention).toBe('jpg');
expect(err).toBe(null);
done();
});
});
但在我的例子中,我想填充:
const content = // Populate data
使用编码为base64的图像。但是如果我将base64原样放置,则会使代码在我对其进行更多测试时无法读取。因此,我可以将图像放置在哪里/如何进行测试,以便在测试期间将其用作数据?
1条答案
按热度按时间kr98yfug1#
在一个单独的JS fixture文件(或json文件,甚至数据库)中。
请注意,
currentTestName
也将包括describe
名称,但您可以自由地使用任何内容为images对象设置关键字。