Jest:模拟构造函数返回错误

时间:2021-01-08 06:56:06

标签: javascript unit-testing jestjs

我在开玩笑中尝试模拟类构造函数时遇到问题。

我有一些与此类似的代码,我想对捕获进行代码覆盖

   try {
    redis = new Redis(params); 
   }catch(err){
    return reject(new Error());
   }

我试图在单元测试中创建以便“新 Redis”抛出错误的模拟包括如下内容:

jest.mock('ioredis', () => {
  return jest.fn().mockImplementation(() => {
    return {
      constructor: () => {
        throw new Error();
      },
    };
   });
 });

文档似乎没有模拟构造函数的好例子。

1 个答案:

答案 0 :(得分:0)

documentation 解释了如何模拟类。它不显示 constructor 方法,因为它在这些场景中无关紧要。在 JavaScript 中,constructor 是一个特殊的方法,通常等于构造函数本身,Class === Class.prototype.constructorconstructor 用于继承但通常不直接调用,因此在这种情况下嘲笑甚至提及它没有意义。它是被调用的构造函数,它应该被模拟:

jest.mock('ioredis', () => {
  return jest.fn().mockImplementation(() => {
    throw new Error();
  });
});
相关问题