У меня есть следующий модуль, над которым я работаю над добавлением модульных тестов. В основном я хочу, чтобы приложение app.use вызывалось с/и соответствующим обработчиком this.express.static('www/html')
, я также хочу убедиться, что app.listen
вызывается с правильным портом.Тестирование модуля expressjs application
function WebService(express, logger) {
this.express = express;
this.log = logger;
this.port = 3000;
}
// init routes and start the server
WebService.prototype.start = function start() {
var app = this.express();
// Setup routes
app.use('/', this.express.static('www/html'));
// Startup the server
app.listen(this.port);
this.log.info('Starting webserver on port %s', this.port);
};
module.exports = WebService;
Если удалить app.use (заменить с помощью простого app.get) я могу получить Слушающиеся тестирование, передавая это в конструктор в тесте
var express_stub = function() {
var tmpObj = {
get: function() {},
listen: listen_stub // sinonjs stub
};
return tmpObj;
};
единичном Когда я переключаться к использованию this.express.static
в пути, это падает (предположительно потому, что this.express не определяет статические). Я не могу получить свою голову, обернутую вокруг правильного способа справиться с этим. this.express()
как конструктор действительно меня бросает. Я не могу понять правильный способ издеваться над вызовами, которые я хочу проверить в экспресс.
Colonnello Я предполагаю, что тестирование устройства, если оно отличается от тестирования интеграции ... этот пример является интеграционным тестом –
P.M вы правы. Я был не слишком ясен. Это не модульное тестирование, а способ тестирования на маршрут, наиболее используемый в экспресс-разработке, но я также выполняю модульные тесты в экспресс-приложении, поэтому мой ответ не является неправильным, но неполным, я думаю .. –