我想对Express中间件功能进行单元测试,而后者又使用node-formidable来处理多部分文件上传.
这是一个人为的例子:
function doUpload(req, res, next) {
const form = new formidable.IncomingForm();
form.uploadDir = this.mediaDir;
form.keepExtensions = true;
form.type = 'multipart';
form.multiples = true;
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
}
Run Code Online (Sandbox Code Playgroud)
在使用Chrome和正在运行的Express应用程序进行测试后,此代码适用于我.
我希望我的测试代码看起来像我在模拟请求对象,但我无法弄清楚如何使用表单数据模拟请求对象.强大的回调没有触发:
it(‘handles uploads’, (done) => {
const mockReq = http.request({
host: 'example.org',
});
mockReq.url = ‘/upload’;
const res = jasmine.createSpyObj('response', [ 'json', 'send', 'status', 'render', 'header', ‘redirect’, ‘end’, ‘write;]);
const next = jasmine.createSpy('next');
//*how to emulate a …
Run Code Online (Sandbox Code Playgroud)