В предыдущем проекте я издевался над библиотекой mysql с Sinon .Я сделал это так:
X.js
:
const con = mysql.createPool(config.mysql);
...
Some other place in the project
:
const rows = await con.query(query, inserts);
...
X.test.js
:
const sinon = require('sinon');
const mockMysql = sinon.mock(require('mysql'));
...
mockMysql.expects('createPool').returns({
query: () => {
// Handles the query...
},
...
Отлично сработало.
В другом проекте я пытаюсь высмеять pg , опять же с Синоном.
pool.js
:
const { Pool } = require('pg');
const config = require('@blabla/config');
const pool = new Pool(config.get('database'));
module.exports = pool;
Some other place in the project
:
const con = await pool.connect();
const result = await con.query(...
Y.test.js
:
???
Я не могу понятькак издеваться connect().query()
.Ни один из следующих подходов не работает:
1:
const { Pool } = require('pg');
const config = require('@blabla/config');
const mockPool = sinon.mock(new Pool(config.get('database')));
...
mockPool.expects('connect').returns({
query: () => {
console.log('query here');
},
});
1 не приводит к ошибке, но используется реальное соединение БД.
2:
const { Pool } = sinon.mock(require('pg'));
const config = require('@blabla/config');
const pool = new Pool(config.get('database'));
pool.expects('connect').returns({
query: () => {
console.log('query here');
},
});
2 => TypeError: Pool is not a constructor
3:
const { Pool } = sinon.mock(require('pg'));
const config = require('@blabla/config');
const pool = sinon.createStubInstance(Pool);
pool.connect.returns({
query: () => {
console.log('query here');
},
});
3 => TypeError: The constructor should be a function.
Может кто-нибудь указать мне правильное направление, какиздеваться над моим соединением PostgreSQL?