如何模拟在Jest中执行子进程
const execSync = require('child_process').execSync;
//...
expect(execSync)
.toHaveBeenCalledWith('npm install');
但实际上在测试过程中没有运行npm安装。
答案 0 :(得分:1)
可以执行以下操作:
jest.mock("child_process", () => {
return {
execSync: () => "This is a test message"
};
});
其中的返回值可以是数字,字符串,对象或其他任何值。它只允许您覆盖execsync的实际实现。
答案 1 :(得分:0)
您可以将lib mock与__mocks__
文件夹一起使用,该文件夹将容纳child_process
文件夹,该文件夹将由玩笑自动加载。
只需创建一个文件
// __mocks__/child_process/index.js
module.exports = {
execSync: jest.fn()
};
将导出child_process
的模拟实现。