在Jest中模拟execSync

时间:2020-01-02 14:21:00

标签: javascript node.js testing jestjs

如何模拟在Jest中执行子进程

const execSync = require('child_process').execSync;
//...
expect(execSync)
  .toHaveBeenCalledWith('npm install');

但实际上在测试过程中没有运行npm安装。

2 个答案:

答案 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的模拟实现。