如何在Jest JS中模拟console.log

kfgdxczn  于 2023-10-14  发布在  Jest
关注(0)|答案(1)|浏览(117)

我在npm中使用JEST进行测试。下面是场景
我有一个TestScript.js文件

function someComplexFunction() {
  console.log("some important message");
}

module.exports = someComplexFunction

在TestScript.test.js文件中测试这个函数

const someComplexFunction = require("./TestScript")

test('Console log should have been called', () => {
    const logSpy = jest.spyOn(console, 'log');

    someComplexFunction();
    
    expect(logSpy).toHaveBeenCalledWith('some important message');
    
    logSpy.mockRestore();
});

当我运行测试时,我失败了
npm test
应已调用控制台日志

expect(jest.fn()).toHaveBeenCalledWith(...expected)

    Expected: "some important message"

    Number of calls: 0

      32 |      someComplexFunction();
      33 |
    > 34 |      expect(logSpy).toHaveBeenCalledWith('some important message');
         |                     ^
      35 |
      36 |      logSpy.mockRestore();
      37 | });

      at Object.toHaveBeenCalledWith (src/test/TestScript.test.js:34:17)

请让我知道我犯了什么错误,为什么嘲笑不起作用。
我试着改变spyOn功能,但仍然不工作,也尝试了警告,但仍然没有运气。

63lcw9qa

63lcw9qa1#

你试过这个吗?here工作

function helloWorld() {
  console.log("Hello, world");
}

jest.spyOn(console, "log");

it("Mock console correctly", () => {
  helloWorld();
  expect(console.log).toHaveBeenCalled();
  expect(console.log).toHaveBeenCalledWith("Hello, world");

});

相关问题