如何在 SoapUI 中发布表单数据以测试 multer node.js 应用程序
Posted
技术标签:
【中文标题】如何在 SoapUI 中发布表单数据以测试 multer node.js 应用程序【英文标题】:How to post form data to test multer node.js application in SoapUI 【发布时间】:2020-10-28 17:23:00 【问题描述】:使用 multer npm 包的 js 应用程序。代码如下:
var multer = require('multer')
var upload = multer( dest: 'avatars' )
router.post('/users/me/avatar', upload.single('avatar'), (req, res) =>
res.send()
)
我正在尝试使用 SoapUi 测试此端点。
但是,我从节点收到以下响应。
MulterError:意外字段 在 WrappedFileFilter (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\multer\index.js:40:19) 在 Busboy。 (C:\Users\pdatta\OneDrive - 美国轮胎经销商\Node\task-manager\node_modules\multer\lib\make-middleware.js:114:7) 在 Busboy.emit (events.js:311:20) 在 Busboy.emit (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\busboy\lib\main.js:38:33) 在 PartStream。 (C:\Users\pdatta\OneDrive - 美国轮胎 Distributors\Node\task-manager\node_modules\busboy\lib\types\multipart.js:213:13) 在 PartStream.emit (events.js:311:20) 在 HeaderParser。 (C:\Users\pdatta\OneDrive - 美国轮胎 Distributors\Node\task-manager\node_modules\dicer\lib\Dicer.js:51:16) 在 HeaderParser.emit (events.js:311:20) 在 HeaderParser._finish (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\dicer\lib\HeaderParser.js:68:8) 在 SBMH。 (C:\Users\pdatta\OneDrive - 美国轮胎分销商\Node\task-manager\node_modules\dicer\lib\HeaderParser.js:40:12) 在 SBMH.emit (events.js:311:20) 在 SBMH._sbmh_feed (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\streamsearch\lib\sbmh.js:95:16) 在 SBMH.push (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\streamsearch\lib\sbmh.js:56:14) 在 HeaderParser.push (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\dicer\lib\HeaderParser.js:46:19) 在 Dicer._oninfo (C:\Users\pdatta\OneDrive - American Tire Distributors\Node\task-manager\node_modules\dicer\lib\Dicer.js:197:25) 在 SBMH。 (C:\Users\pdatta\OneDrive - 美国轮胎经销商\Node\task-manager\node_modules\dicer\lib\Dicer.js:127:10)
请帮我解决这个问题。该文件未保存在目标目录中。
如果您需要任何其他信息,请告诉我
【问题讨论】:
【参考方案1】:试试这个作为中间件
const multer = require('multer')
const dirStorage = __dirname +'/avatas';
const storageOption = multer.diskStorage(
destination: function (req, file, cb)
cb(null, req.dirStorageUser);
,
filename: function (req, file, cb)
cb(null, `new_avatar.png`);
);
const upload = multer(
storage: storageOption
).single('upload');
router.post('/users/me/avatar', uploadMiddleware, (req, res) =>
res.send("");
)
function uploadMiddleware(req, res, next)
if (!fs.existsSync(dirStorage))
fs.mkdirSync(dirStorage);
upload(req, res, function (err)
let errorMsg;
if (err instanceof multer.MulterError)
errorMsg = 'Was not possible save image';
else if (err)
errorMsg = 'Something was wrong on save image';
if (errorMsg)
return res.send(errorMsg);
return res.send("success");
//next("route");
);
:
【讨论】:
感谢您的回复。我从服务器收到了这个响应——“无法保存图像”。任何人都可以从屏幕截图中检查我的 SoapUi 请求,因为我确定我做的是否正确。谢谢 对不起,伙计。将 .single('upload') 更改为 .single('avatar') 您的字段。并检查您的文件夹是否允许写入 我收到此错误。我需要从某人的屏幕截图中验证我的 SoapUi 请求。 internal/validators.js:117 throw new ERR_INVALID_ARG_TYPE(name, 'string', value);以上是关于如何在 SoapUI 中发布表单数据以测试 multer node.js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Maven SoapUI 插件 - 如何在 Maven 的生命周期中执行 2 个 SoapUI 测试项目
soapui中文操作手册----通过您的WSDL请求创建一个测试