супертест не может проанализировать код состояния 400

Я столкнулся с некоторыми проблемами с супертестом, мокко и узлом с кодом состояния синтаксического анализа 400.

Вот мой index.js код:

var express = require('express');
var app = express();

app.get('/api/tweets', function(req, res) {
    var userId = req.query.userId;

    if (!userId) {
        return res.sendStatus(400);
    }

});

module.exports = app;

когда я делаю mocha test.js, я получаю распечатку:

Test:
1) respond with status code 400 for GET /api/tweets with missing userId


0 passing (75ms)
1 failing

1) Test: respond with status code 400 for GET /api/tweets with missing userId:
 Uncaught TypeError: Cannot read property 'status' of undefined
  at net.js:1419:10

Вот код для test.js:

var request = require('supertest')

describe('Test:', function() {
  var server = require('./index')
  it('respond with status code 400 for GET /api/tweets with missing userId', function(done) {
request(server)
  .get('/api/tweets?userId')
  .expect(400, done)
  })
})

Есть ли какие-либо указатели, которые можно было бы дать? Я не уверен, почему node/supertest дает мне такую ​​странную ошибку.

Моя установка выглядит следующим образом:

NVM установлен, но использует версию системного узла (0.12.3).

Заранее спасибо за помощь!

-Стю.


person Stuart Weir    schedule 22.05.2015    source источник


Ответы (2)


Используете ли вы последнюю версию супертеста и экспресс-теста? В супертесте 1.0.0 произошли некоторые большие изменения в виде новой версии суперагента, которая изменила способ "ошибки " ответы были обработаны для ответов, отличных от 2xx.

Этот тест работал у меня, используя экспресс 4.12.2 и супертест 1.0.1.

var request = require('supertest')
, express = require('express');

var app = express();

app.get('/api/tweets', function(req, res) {
  var userId = req.query.userId;
  if (!userId) {
    return res.sendStatus(400);
  }

  res.sendStatus(200);
});

describe.only('GET /api/tweets', function() {
  it('should respond with HTTP 400 for missing userId', function(done) {
    request(app)
    .get('/api/tweets?userId')
    .expect(400, done);
  });
  it('should respond with HTTP 200 with userId', function(done) {
    request(app)
    .get('/api/tweets?userId=100')
    .expect(200, done);
  });
});
person Mikelax    schedule 26.05.2015

Супертест... Не удается прочитать статус свойства неопределенного

Я получил эту ошибку выше при тестировании через безопасное соединение. Я исправил это, добавив NODE_TLS_REJECT_UNAUTHORIZED=0 в качестве переменной окружения при тестовом запуске.

Для тех, кто интересуется, почему это происходит, это может произойти из-за того, что «127.0.0.1» не указан в качестве действительного IP-адреса в вашем сертификате. Основная ошибка:

Имя хоста/IP не соответствует альтернативным именам сертификата: «IP: 127.0.0.1 отсутствует в списке сертификатов:

Однако вы не увидите это сообщение об ошибке, а только ложное и очень нелюбимое «Невозможно прочитать статус свойства неопределенного».

person danday74    schedule 04.10.2016