ОК, во-первых, хотя тестирование кода маршрутизации - это то, что вы можете или не хотите делать, в общем, попытайтесь отделить интересующую вас бизнес-логику в чистом коде JavaScript (классах или функциях), который отделен от экспресс-или любой другой структуры, которую вы используете.использовать и использовать ванильный тест мокко, чтобы проверить это.Как только вы добились этого, если вы действительно хотите протестировать маршруты, которые вы настраиваете в mocha, вам нужно передать параметры mock req, res
в функции промежуточного программного обеспечения, чтобы имитировать интерфейс между express / connect и вашим промежуточным программным обеспечением.
В простом случае вы могли бы создать фиктивный res
объект с функцией render
, который выглядит примерно так:
describe 'routes', ->
describe '#show_create_user_screen', ->
it 'should be a function', ->
routes.show_create_user_screen.should.be.a.function
it 'should return something cool', ->
mockReq = null
mockRes =
render: (viewName) ->
viewName.should.exist
viewName.should.match /createuser/
routes.show_create_user_screen(mockReq, mockRes).should.be.an.object
Также только функции промежуточного программного обеспечения FYI не должны возвращать какое-либо конкретное значение,это то, что они делают с параметрами req, res, next
, на которых вы должны сосредоточиться при тестировании.
Вот некоторый JavaScript, как вы просили в комментариях.
describe('routes', function() {
describe('#show_create_user_screen', function() {
it('should be a function', function() {
routes.show_create_user_screen.should.be.a["function"];
});
it('should return something cool', function() {
var mockReq = null;
var mockRes = {
render: function(viewName) {
viewName.should.exist;
viewName.should.match(/createuser/);
}
};
routes.show_create_user_screen(mockReq, mockRes);
});
});
});