我正在尝试模拟pg promise库。我希望能够模拟回报是否承诺拒绝或解决。这是一个示例函数和测试:
const pgp = require('pg-promise')({});
const someFunc = callback => {
const db = pgp('connectionString');
db
.none('create database test;')
.then(() => {
callback(null, 'success');
})
.catch(err => {
callback(err);
});
};
module.exports = {
someFunc
};
我想这样测试它:
const { someFunc } = require('./temp');
let pgp = require('pg-promise')({
noLocking: true
});
// HOW TO MOCK?
describe('test', () => {
beforeEach(() => {
jest.resetModules();
jest.resetAllMocks();
});
it('should test', () => {
let db = pgp('connectionString');
// how to mock this?
db.none = jest.fn();
db.none.mockReturnValue(Promise.reject('mock'));
const callback = jest.fn();
someFunc(callback);
return new Promise(resolve => setImmediate(resolve)).then(() => {
expect(callback.mock.calls.length).toEqual(1);
});
});
});
答案 0 :(得分:0)
您可以像这样愚蠢的模拟来模拟AbstractErrorController
对象:
pgp
答案 1 :(得分:0)
这是一个老问题,但这是一个新答案:
您可以看看pg-mem,这是我最近发布的一个库,它模仿内存中的postgres实例。
它支持大多数常见的SQL查询(但在语法不太频繁时会失败-如果遇到这种情况,则会提出问题)。
我写了一篇有关here的文章
有关您的用例,请参见this section