使用node.js中的form-data模块,你可以这样做
form.pipe(request)
将表单数据放入请求中。但是你怎么能等到它完成呢?有没有像这样的回调
form.pipe(request).done(function(err) {});
有人知道吗?
由于
答案 0 :(得分:0)
在文档中,他们使用:
form.pipe(request);
request.on('response', function(res) {
console.log(res.statusCode);
});
答案 1 :(得分:0)
我为使测试正常工作而做了什么:
app.js
// form is declared
return await new Promise((resolve, reject) => {
const req = https.request(
process.env.HOST,
{
method: 'POST',
headers: form.getHeaders()
},
(res) => {
let data = '';
res.on('data', (d) => {
data += d;
});
res.on('end', () => {
resolve({
statusCode: res.statusCode,
body: data,
});
});
},
).on('error', reject);
form.pipe(req);
});
和
test-handler.js
sinon.replace(https, 'request', (url, options, callback) => {
const request = new EventEmitter();
request.on('pipe', () => {
const res = new EventEmitter();
res.statusCode = 200;
callback(res);
res.emit(
'data',
JSON.stringify({}),
);
res.emit('end');
});
return request;
});
我了解它并不能严格回答您的问题,因为“管道”事件会在管道开始时而不是在管道完成时触发,但是就测试而言,我不知道如何使响应完成。