Можно ли протестировать Express JS REST API, используя супертест, но заменив фактическое соединение с базой данных фиктивным объектом базы данных? У меня есть модульные тесты, охватывающие модели баз данных и другие части приложения, а также функциональные тесты конечных точек API, выполняющих фактические подключения к базе данных, но у меня есть странное требование создавать интеграционные тесты, которые похожи на функциональные тесты, но используют фиктивные подключения к базе данных. Пример контроллера конечной точки приведен ниже:
var model = require('../../../lib/models/list');
module.exports = {
index: function(req, res) {
var data = { key: 'domains', table: 'demo.events'};
var dataModel = new model(data);
dataModel.query().then(function(results) {
res.respond({data: results}, 200);
}).fail(function(err) {
console.log(err);
res.respond({message: 'there was an error retrieving data'}, 500);
});
}
};
И индекс для URI
var express = require('express'), app, exports;
app = exports = module.exports = express();
exports.callbacks = require('./controller');
app.get('/', exports.callbacks.index);
Модель списка, используемая в контроллере, подключается к базе данных и извлекает выходные данные. Задача состоит в том, чтобы имитировать этот фактический вызов базы данных, но при этом использовать супертест для выполнения запроса и извлечения данных из URI.
Любая информация будет полезна, в том числе если вы считаете, что это плохая или бессмысленная идея.