【发布时间】:2017-09-08 20:37:17
【问题描述】:
我正在尝试测试一个使用 pg 模块查询数据库的函数,这是我的使用方法:
const { Pool } = require('pg');
const { liveDB } = require('../config/db');
const pool = new Pool(liveDB);
exports.query = async (query) => {
const client = await pool.connect();
try {
var result = await client.query(query);
console.log('result from db.query', result);
return result;
} catch (err) {
console.log('ERROR in db.query')
console.error(err);
throw err;
} finally {
console.log('Releasing client');
await client.release();
}
};
通常,我会存根这样的函数(db.saveUser 在这里是一个假函数,但它确实被正确存根):
var stub = sinon.stub(db, 'saveUser').callsFake(() => { return 'Saved from stub' });
但是,这在 pg 模块上不起作用,我尝试对构造函数、Pool、.connect、.release 甚至整个模块进行存根,但由于某种原因似乎没有任何效果。
PS:我也尝试将所有变量的 const 更改为 var,因为我认为这是原因,结果相同。我还在存根中尝试了承诺,在几个方面都没有改变。
【问题讨论】:
标签: node.js unit-testing sinon