就像我之前关于模拟的问题中提到的那样,我是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() }
});