在js中检查(读取)控制台的消息

checking (reading) messages to console in js

本文关键字:控制台 消息 读取 js 检查      更新时间:2023-09-26

我正在使用Quit创建单元测试。我想测试一下,对于一个非致命错误,会向控制台发送一条警告消息。(是的,我知道我们不应该在生产代码中写入控制台。放手吧。)

所以,我有一个弹出实用程序,它接受一个配置对象:

popup.js:

showPopup = function(cfg){
  if !(cfg.message){
    utils.log('A message is required!');
  }
};

(utils.log函数将处理浏览器是否真的支持控制台)

然后我的测试文件就完成了它的任务。

popup.tests.js:

showPopup({stuff: 'stuff', message: 'I am a popup!'});
QUnit.test('A warning message is logged to console', function (assert) {
  // want to know a message was sent
}

我如何确认消息已发送?

我要做的是在单元测试中覆盖console.log:

window.console = (function(old_logger) {
    var previous_message;
    var log = function(msg) {
        previous_message = msg;
        old_logger.log(msg);
    }
    var previous = function() {
        return previous_message;
    }
    return { log: log, previous: previous }
})(window.console);            

然后你可以做:

showPopup({stuff: 'stuff'});
assert.equal('A message is required!', console.previous());

显然,对我们来说"正确"的答案是使用sinon存根。