2017-02-19 37 views
1

Я пытаюсь выяснить, как проверить первый мой узел js rest api app. до сих пор я использовал nock, чтобы перехватить и издеваться над любым HTTP-вызовом и тем самым проверить мою службу как компонент. (тестирование компонентов?) Я хочу начать модульное тестирование моего приложения, чтобы моя тестовая пирамида была более сбалансированной, и тесты будут легче писать.TDD Test first Nodejs express Rest Api - модульное тестирование middlewere/контроллеры/маршруты

поиска в Интернете я получил такого подхода: http://www.slideshare.net/morrissinger/unit-testing-express-middleware

var middleware = require('./middleware'); 
app.get('example/uri', function (req, res, next) { 
    middleware.first(req, res) 
    .then(function() { next(); }) 
    .catch(res.json) 
    .done(); 
}, function (req, res, next) { 
    middleware.second(req, res) 
    .then(function() { next(); }) 
    .catch(res.json) 
    .done(); 
}); 

(поясню вытягивать промежуточное, и тестирования)

, поскольку эта презентация с 2014 года я задавался вопросом, что в настоящее время являются вверх на сегодняшний день методы модульного тестирования экспресс-приложений?

ответ

1

У меня была та же проблема, и я использовал другой подход. Сначала я создал файл, включенный во всех моих тестах, которые начинают узел и экспортировать функцию, чтобы отправить запрос HTTP:

process.env.NODE_ENV = 'test'; 
var app = require('../server.js'); 

before(function() { 
    server = app.listen(3002); 
}); 

after(function(done) { 
server.close(done); 
}); 

module.exports = { 
    app: app, 
    doHttpRequest: function(path, callback) { 
    var options = { 
     hostname: 'localhost', 
     port: 3002, 
     path: path, 
     method: 'GET', 
     headers: { 
     'Content-Type': 'application/json', 
     'Content-Length': 0 
     } 
    }; 

    var req = http.request(options, 
     function(response) { 
     response.setEncoding('utf8'); 

     var data = ''; 
     response.on('data', function(chunk) { 
      data += chunk; 
     }); 

     response.on('end', function() { 
      callback(data, response.statusCode); 
     }); 
     }); 

    req.end();  
    } 
} 

Затем я позвонил мой сервер, используя предыдущий объявленный метод:

var doHttpRequest = require('./global-setup.js').doHttpRequest; 
var expect = require('chai').expect; 

describe('status page test', function() { 

    it('should render json', function(done){ 
    doHttpRequest('/status', function(response) { 
     expect(JSON.parse(response).status).to.eql('OK'); 
     done(); 
    }) 
    }); 
}); 

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

  • Нет связанных вопросов^_^