2015-04-16 2 views
0

Я пишу блок-тест с supertest для тестирования моего сервера. Но одно из полей моего тела, содержащее массив json-объектов, «прибывает» undefined.Supertest множественный массив request.field не определен на сервере

код:

//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 на сервере не определен. Строки не проблема. Фактическая реализация с угловым интерфейсом работает отлично, поэтому проблема не связана с сервером.

Надежда кто-то может помочь мне, большое спасибо заранее ...

ответ

2

Кажется, какой метод fielddoes not accept arrays. Потому что он использует модуль 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 
    } 
+0

Спасибо, это решить мою проблему !! – smeedten

+0

Привет, У меня такая же проблема, но ваше решение не работает для меня. Есть ли способ отправить массив через supertest? – mkatanski

+0

Я решил эту проблему, используя функцию 'send'. Возможно, это будет полезно для кого-то: 'req.send ({'CategoryID': 'new', 'CategoryOrder': '15', 'CategoryName': {PL: 'TestPL', EN: 'TestEN'}}); ' Дополнительная информация здесь: http://visionmedia.github.io/superagent/#post-/ put request – mkatanski