Supertest multiple request.field 数组在服务器上未定义

Supertest multiple request.field array is undefined on the server

我正在用 supertest 编写单元测试来测试我的服务器。但是我的 body 字段之一包含 json objects 'arrives' 未定义的数组。

代码:

//declaration of variable
tags = [{name: 'tag1'},{name: 'tag2'},{name: 'tag3'}];

//actual post
 agent.post('/pictures')
                .set('Connection', 'keep alive')
                .set('Content-Type', 'application/x-www-form-urlencoded')
                .field('picTitle', 'Picture Title')
                .field('tags', tags)
                .attach('file', __dirname + '/img/noel.jpg')
                .end(function(pictureSaveErr, pictureSaveRes) {
                   //do stuff
                }

所以问题是服务器上的 req.body.tags 未定义。字符串没有问题。 angular 前端的实际实现工作完美,所以问题不在服务器上。

希望有人能帮助我,在此先感谢...

似乎是什么 field 方法 does not accept arrays. Because it uses form-data 模块。
你应该尝试这样的事情:

agent.post('/pictures')
     .set('Connection', 'keep alive')
     .set('Content-Type', 'application/x-www-form-urlencoded')
     .field('picTitle', 'Picture Title')
     .field('tags[0][name]', tags[0].name)
     .field('tags[1][name]', tags[1].name)
     .field('tags[2][name]', tags[2].name)
     .attach('file', __dirname + '/img/noel.jpg')
     .end(function(pictureSaveErr, pictureSaveRes) {
         //do stuff
     }