2015-04-06 2 views
1

У меня возникли проблемы с отправкой тела запроса в суперпозицию. Я читал решения других вопросов, которые винят неправильную конфигурацию body-parser, но эти ответы относятся к пользовательскому типу данных. (res.body is empty in this test that uses supertest and Node.js). Настроить тело-анализатор, как это:Пустое тело в супер-запросе с заявкой/vnd

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({ limit: '50mb', type: 'application/vnd.api+json' })); 
app.use(bodyParser.urlencoded({limit: '50mb', extended: true})); 

Это решение поста я предоставил говорит «Supertest использует this файл, чтобы определить, если вы отправляете JSON или нет.» Мой тип контента фактически указан там, поэтому я не понимаю, почему это должно быть проблемой.

Я пытаюсь отправить запрос так:

it ('creates user', function (done) { 
    var user = { 
     firstname: 'Joe', 
     lastname: 'JoeJoe', 
     email: '[email protected]', 
     password: 'spartacus', 
    }; 

    request(app) 
     .post('/api/users') 
     .send(user) 
     .expect(200) 
     .expect('Sent email to [email protected]', done) 
    }); 
}); 

И я импортировать мое приложение с этой линией:

var app = require('../server.js'); 

Где server.js настраивает мое приложение полностью. Поддерживается ли этот тип приложения supertest? Есть ли способ заставить данные пользователя быть замеченными как часть req.body?

+0

Не забудьте отправить типа содержимого заголовка «приложения/vnd.api + JSON» – lxe

+0

Не могли бы вы объяснить, где установить, что? – ritmatter

+0

'request (app) .post ('/ api/users', {headers: {'content-type': 'application/vnd.api + json'}})' – lxe

ответ

0

Я считаю, что проблему можно решить, установив заголовок content-type на ваш post запрос на адрес application/vnd.api+json. Вы можете сделать это в Supertest/SuperAgent следующим образом:

it ('creates user', function (done) { 
    var user = { 
     firstname: 'Joe', 
     lastname: 'JoeJoe', 
     email: '[email protected]', 
     password: 'spartacus', 
    }; 

    request(app) 
     .post('/api/users') 
     .set('Content-Type', 'application/vnd.api+json') 
     .send(user) 
     .expect(200) 
     .expect('Sent email to [email protected]', done) 
    }); 
});