函数的第二次调用"/>
如何进行Jest spOn函数的第二次调用
我嵌套了Postgres查询。因此,当我测试时,我希望Jest.spyOn以不同的响应来解析
const query1 = 'SELECT NOW() as now'
const query2 = 'SELECT * from table1'
return new Promise((resolve, reject) => {
pgClient
.query(query1)
.then(res => {
pgClient
.query(query2)
.then(res => {
resolve(res.rows[0])
})
.catch(e => reject(e.stack))
})
.catch(e => reject(e.stack))
});
所以我的测试看起来像:
jest.spyOn(pgClient, 'query').mockImplementation(() =>
Promise.resolve({ rows: [...] })
);
那么,如何在同一测试中解决query1和query2不同的响应?
回答如下:您可以根据传递给它的参数,使mockImplementation
返回不同的响应:
jest.spyOn(pgClient, "query").mockImplementation(query => {
if (query === query1) {
return Promise.resolve({ rows: [1] });
} else if (query === query2) {
return Promise.resolve({ rows: [2] });
}
return Promise.resolve({ rows: [] });
});
demo
更多推荐
如何进行Jest spOn函数的第二次调用
发布评论