就像我之前关于模拟的问题中提到的那样,我是Jest和测试的新手,而且似乎也遇到了一些麻烦。

这次我在CLI应用程序中模拟shelljs时遇到麻烦。

自动模拟jest.mock('shelljs');无效,错误为:[TypeError:shell.exec不是函数]

所以我继续尝试使用mockImplementation()

jest.mock('shelljs', () => {
  return jest.fn().mockImplementation(() => {
    return {
      exec: () => {}
    };
  });
});


令我惊讶的是,我仍然收到相同的错误消息

任何指针将不胜感激。

更新08/04/2020:

根据特内夫(Teneff)在下面的回复,该模拟在以下情况下可以正常工作:

jest.mock('shelljs', () => {
  return {
    exec: jest.fn()
  };
});


现在我超时了,因为我对shell.exec()的调用是异步的,并且有一个可解决我的诺言的回调。

我的目标是模拟shell.exec()来仅解决承诺,但它会陷入等待和Jest超时。

最佳答案

当您将shell用作具有.exec属性的对象时,jest.mock工厂函数应返回具有exec属性的对象

jest.mock('shelljs', () => {
  return { exec: jest.fn() }
});

10-05 21:07
查看更多