2
我试图测试使用PG模块查询数据库的功能,在这里是如何我使用它:节点/兴农 - 库或模块(节点的Postgres)存根功能
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,以及因为我认为这是原因,相同的结果。我也尝试在存根中承诺,在几个方面,没有改变。
'sinon.stub()'返回一个承诺? @alexmac – turmuka
©turmuka,no。当被刺的函数被调用时,Promise将被返回 – alexmac
有没有理由为什么库中的东西不能像普通模块一样被替换?对于一个小项目来说很好,但我宁愿没有额外的代码/暴露一些真的不应该导出的函数。 – Mankind1023