2015-05-22 4 views
1

Я бегу в некоторых проблем с Supertest, мокко, и узел с кодом состояния разборе 400.Supertest не удается разобрать код состояния 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).

Заранее благодарим за вашу помощь!

-Stu.

ответ

0

Используете ли вы последнюю версию supertest и express? С supertest 1.0.0 произошли большие изменения с помощью новой версии суперагента, которая изменила то, как обрабатывались "error" responses для ответов без 2xx.

Этот тест работал для меня с помощью экспресс-4.12.2 и Supertest 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); 
    }); 
}); 
0

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

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

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

Hostname/IP не соответствует altnames сертификата: «IP: 127.0.0.1 не в списке Cert в:

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

Смежные вопросы