如何进行Jest spOn函数的第二次调用

编程入门 行业动态 更新时间:2024-10-10 10:32:04

如何进行Jest spOn<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数的第二次调用"/>

如何进行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函数的第二次调用

本文发布于:2024-05-07 21:53:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757423.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   Jest   spOn

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!