我有一个基于Express.js构建的应用程序,我想测试文件上传功能。我正在尝试重现解析为req.files的对象(使用express.bodyParser中间件时)。我怎样才能做到这一点?
您可以直接在Mocha中执行此操作,但这有点棘手。这是发布图像的示例:
var filename = 'x.png' , boundary = Math.random() request(app) .post('/g/' + myDraftGallery._id) .set('Content-Type', 'multipart/form-data; boundary=' + boundary) .write('--' + boundary + '\r\n') .write('Content-Disposition: form-data; name="image"; filename="'+filename+'"\r\n') .write('Content-Type: image/png\r\n') .write('\r\n') .write(fs.readFileSync('test/'+filename)) .write('\r\n--' + boundary + '--') .end(function(res){ res.should.have.status(200) done() })
Content-Disposition 的 name 参数是通过req.files(以req.files.image为例)可访问文件的内容。您还可以使用如下数组值:name =“ images []”和文件(s)将通过数组提供,例如:req.files.images [0]
编辑 :由于express 3-beta5,express使用supertest。要查看旧的http.js代码,请点击此处:https : //github.com/visionmedia/express/blob/3.0.0beta4/test/support/http.js 或直接移至超级测试。