【发布时间】:2020-11-20 04:01:58
【问题描述】:
我正在尝试测试一段(对我而言)复杂的代码,我只想返回虚拟数据,以便对它的处理方式进行断言。代码如下:
const { sql, dbConnPoolPromise } = require('../database/db.js');
router.get('/', async (req, res) => {
try {
const pool = await dbConnPoolPromise
const result = await pool.request()
.query(SQL_SELECT_ALL);
res.status(200);
res.json(result.recordset[0]);
} catch (err) {
res.status(500);
res.send("ERROR, General Get" + err.message);
}
});
我想用一组虚拟数据替换 const 结果,从而模拟 SQL 服务器可能给出的响应。 我无法弄清楚如何做到这一点。 我目前正在使用 Jest 作为我的测试套件,并希望使用 spyOn 或 Jest.fn() 来替换它,但这仅适用于函数。有没有办法替换变量?我无法替换整个 router.get,因为我正在测试 res.status(200)(以及其他)是否正确发送到客户端,我只想替换变量的值。
如果需要,dbConnPoolPromise 的内容是:
let sql = require('mssql');
const config = require('config');
let dbConnPoolPromise = new sql.ConnectionPool(config.get('connection'))
.connect()
.then(pool => {
return pool
})
.catch(err => console.log('Database Connection Failed - error: ', err))
module.exports = {
sql, dbConnPoolPromise, buildSelect
};
【问题讨论】:
标签: javascript node.js azure unit-testing jestjs