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

时间:2015-11-05 21:55:19

标签: javascript qunit console.log

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

所以,我已经有了这个接受配置对象的弹出工具:

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
}

如何确认邮件已发送?

2 个答案:

答案 0 :(得分:1)

我要做的是在单元测试中覆盖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());

答案 1 :(得分:0)

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