2014-02-18 3 views
1

나는 자바 스크립트가 :어떻게 터미널에서 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 개체를 덮어 써야한다는 것입니다. 즉, 사용자 환경에서 뭔가를 적극적으로 변경해야합니다. 그리고 저는 이것이 좋은 생각이라고 생각하지 않습니다. ;

문제에 대한 해결 방법이있을 수 있습니다,하지만

말할 수 있습니다),이 같은 자바 스크립트 파일을 클라이언트 측과 같은 디버깅 기능() 쓰기 : 이제

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를 사용하면 프로덕션 코드를 빌드 할 때 디버깅 내용을 파싱 할 수 있으므로 선적 할 필요가 없습니다. 당신의 달렉 테스트에서

, 그냥 이렇게 : 당신에게 명령 줄 출력의 로그 물건을 줄 것이다

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

희망.

관련 문제