gpt4 book ai didi

javascript - 测试用 Jest 覆盖 console.log

转载 作者:行者123 更新时间:2023-11-29 23:15:54 25 4
gpt4 key购买 nike

我正在使用以下代码过滤一些消息:

const consoleLog = console.log;
console.log = (...args) => {
if (args.length === 0 || typeof args[0] !== 'string' || !args[0].includes('[HMR]')) {
consoleLog.apply(console, args);
}
};

如何测试此函数的控制台输出?通常,我只是模拟 console.log,但在这种情况下它被上面的代码覆盖了,所以我不能那样做。

最佳答案

或者根本不要弄乱原始的 console.log

const consoleLog = (...args) => {
if (args.length === 0 || typeof args[0] !== 'string' || !args[0].includes('[HMR]')) {
console.log.apply(console, args);
}
};

然后在您的应用程序代码中专门使用 consoleLog

这种间接的好处:

  • 它更安全。您根本不会对原始 console.log 进行猴子修补。
  • 它更具前瞻性。如果您从 console.log 切换到例如稍后使用第 3 方日志记录框架,您不必调整所有日志记录代码。

但是,如果您有意配置使用 console.log 的您无法控制的代码(第 3 方),那么这当然不适用于这种情况。

使用这种方法,对于单元测试,按照 estus 的答案中的建议监视 console.log(从未修改过)。

关于javascript - 测试用 Jest 覆盖 console.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52782851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com