我正在使用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
}
如何确认邮件已发送?
答案 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存根。