如何在终端上观看console.log。Dalekjs

如何在终端上观看console.log。Dalekjs,dalekjs,Dalekjs,我有javascript: $('#link').on('click', function () { console.log('Click link'); }); 我写了dalekjs测试: module.exports = { 'Clicked link': function (test) { test.open('http://localhost/') .click('#link') .done();

我有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
后,我想看到
点击链接


我怎样才能得到它?

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

不过,您的问题可能有解决方法;)

比方说,您编写了如下调试函数(作为客户端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 fun,您可以在构建生产代码时解析调试内容,这样您就不需要发布它了

在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);
};
希望这能帮助你解决问题