2014-02-18 2 views
1

У меня есть JavaScript:Как я могу посмотреть console.log в терминале. Dalekjs

$('#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.

Как я могу получить его?

ответ

2

В настоящее время невозможно & Я не знаю, будет ли это возможно в будущем. Дело в том, что вы должны переписать объект 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, вы можете разбирать эту отладку при создании своего производственного кода, чтобы вам не нужно было его отправлять.

В вашем Далеков тесте, просто сделать это:

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); 
}; 

Надежда, что помогает вам с вашей проблемой.

Смежные вопросы