我怎样才能在终端上观看console.log.Dalekjs



我有javascript:

$('#link').on('click', function ()
{
console.log('Click link');
});

我写了dalekjs测试:

module.exports = {
'Clicked link': function (test)
{
test.open('http://localhost/')
.click('#link')
.done();
}
};

运行完$ dalek tests/test.js之后,我想看看Click link

我怎样才能拿到它?

这目前是不可能的&我不知道将来是否有可能。问题是,您必须覆盖浏览器中的console对象。这意味着,您必须积极地改变用户环境中的某些内容。我认为这不是一个好主意。

尽管如此,您的问题可能有一个变通方法;)

比方说,您编写了一个调试函数(作为客户端javascript文件),如下所示:

window.myDebugLog = [];
window.myDebug = function () {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
}

现在,让我们稍微修改一下您的日志记录功能:

$('#link').on('click', function () {
var msg = 'Click link';
console.log(msg);
window.myDebug(msg);
});

有了这个,你可以访问&输出日志。更好的是,有了一些ClojureCompiler或Esprima的乐趣,你可以在构建生产代码时解析出调试内容,这样你就不需要发货了。

在你的Dalek测试中,只需这样做:

module.exports = {
'Clicked link': function (test) {
test.open('http://localhost/')
.click('#link')
.execute(function () {
this.data('logs', window.myDebugLog);
})
.log.message(function () {
return JSON.stringify(test.data('logs').pop());
})
.done();
}
};

这将在命令行输出中为您提供日志内容。如果您不愿意添加这个额外的函数调用,您也可以自己覆盖console.log。但这可能会引起一些麻烦,所以对此持谨慎态度:

window.myDebugLog = [];
window.oldLog = console.log;
console.log = function () {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
window.oldLog.apply(console, list);
};

希望这能帮助你解决问题。

相关内容

  • 没有找到相关文章

最新更新