是否可以使用 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 检索数据
任何信息都会有所帮助,包括您是否认为这是一个糟糕或毫无意义的想法