我想模拟下面的代码行。并请解释一下我是javascript新手和编写测试用例时如何详细模拟这一点。以下代码将返回一个承诺。
const createPriceConfiguration = (fastify, req) => {
return fastify.pg.transact(client => insertQuery(fastify, client, req));
};
const client = {
query: jest.fn(() => {
return new Promise(resolve => {
resolve({ rows: [req.body] });
});
})
};
我的同事提供了一个我无法理解的解决方案。
transact: jest.fn(queryFunction => {
return queryFunction(client);
})
答案 0 :(得分:0)
您要测试createPriceConfiguration
对象,该函数接受fastify
对象并从中调用函数。可以通过模拟fastify
对象来模拟此功能。您需要在传递的transact
对象中模拟fastify
方法,以返回所需的响应(例如,promise或其他函数的结果,...)
const mockedFastify = {
pg: {
transact: jest.fn(() => new Promise(resolve => {
...desired code
}))
}
};
然后在测试用例中,您传递了模拟对象createPriceConfiguration(mockedFastify);