Я вижу несколько similar questions, но моя настройка немного отличается, и я не могу найти хороший способ проверить это.Экспресс-метод экспресс-маршрута вызовов контроллера?
Я пытаюсь проверить, что мои экспресс-маршруты приложений направлены на правильные методы управления.
Например -
//server.js, base application
var express = require("express");
var app = express();
require("./routes.js")(app);
...
//routes.js
var menuController = require("./controllers/menu.js");
module.exports = function(expressApp) {
expressApp.get('/menu', menuController.getMenu);
};
...
//test file
var express = require('express')
, menuController = require("../../controllers/menu.js")
, chai = require('chai')
, should = chai.should()
, sinon = require('sinon')
, sinonChai = require("sinon-chai");
chai.use(sinonChai);
var app = express();
require("../../routes/routes.js")(app);
describe('routes.js', function(){
it('/menu should call menuController.getMenu route', function(){
var spy = sinon.spy(menuController, 'getMenu');
app.get('/menu', spy);
spy.should.have.been.called; //fails, never called
});
});
Как я могу проверить, что при вызове app.get ('/' меню, ..), обратный вызов от menuController вызывается? Или мне нужно каким-то образом изменить структуру приложения (я вижу несколько других способов настройки маршрутизации)?
Это будет скорее интеграционный тест. Хотя, я понимаю, что вы говорите, и имеет модульные тесты для фактического server.js и menuController. Так что да, я освещаю проверку кодов ответов (т. Е. Реализацию методов контроллера). Но я также хочу проверить, правильно ли настроены маршруты - например: кто-то идет и меняет маршрут, может быть, опечатка, поэтому тест будет ошибкой. –