是否可以使用supertest测试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);
控制器中使用的列表模型连接到数据库并检索输出的数据。挑战是模拟实际的数据库调用,同时仍然使用supertest来发出请求并从URI中检索数据
任何信息都会有所帮助,包括你认为这是一个坏的或毫无意义的想法