2014-07-26 3 views
2

Intern을 사용하여 테스트 실행 중 발생하는 JavaScript 오류를 어떻게보고 할 수 있습니까? 기본적으로 페이지에 자바 스크립트 오류가있는 경우 (명시 적으로 테스트하지 않은 것의 일부로도) 알고 싶습니다.인턴을 이용한 기능 테스트 중에 JavaScript 오류를보고하는 방법은 무엇입니까?

배경

난 그냥 일반적으로 인턴 및 테스트를 시작하는거야 난 그냥 필요로로드 할 모든 자바 스크립트를 변경 때문에 모든 브라우저에서 내 사이트의 주요 페이지를 테스트하기 위해 노력하고있어 .js. Chrome에서 좋아 보이지만 과거에는 require.js 및 임의의 브라우저에 문제가있어 모든 것을 자동화하고 싶었습니다. 발생할 가능성이 가장 큰 문제는 비동기 적재 및 예상 된 글로벌로드로 인해 임의의 JS가 실행에 실패한다는 것입니다. 현재 테스트 설정이 없으므로 기본적으로 '테스트'를 실행하여 모든 주요 페이지를 건너 뛰고 모든 JavaScript 오류를보고 싶습니다.

답변

3

잡히지 않은 오류를보고하려면 페이지의 window.onerror 메서드를 후크해야합니다. 이것은 가능하지만 후크를 추가하기 전에 페이지로드를 완료해야합니다. 즉, 페이지로드 전/도중 또는 페이지가로드 해제되는 동안 발생하는 모든 오류는 단순히 잡히지 않고보고 될 수 없습니다. 또한 양식 제출과 같은 새 페이지로 이동하는 작업을 수행하는 경우 탐색을 유발하는 작업을 수행하기 전에 오류 목록을 검색해야하고 사용자가 도착한 후에 window.onerror 처리기를 다시 구성해야합니다. 새 페이지로 이동하십시오. 크롬을 제외한 모든 브라우저에서 window.onerror의 오류 (8 월 2014) 최신 버전이 제공하는

return this.remote 
    .get('http://example.com') 
    .execute(function() { 
    window.__internErrors__ = []; 
    window.onerror = function() { 
     __internErrors__.push(Array.prototype.slice.call(arguments, 0)); 
    }; 
    }) 
    // ... interact with the page ... 
    .execute(function() { 
    return window.__internErrors__; 
    }) 
    .then(function (errors) { 
    // read `errors` array to get list of errors 
    }); 

참고 :

는 기능 테스트와 같은보고를 수행하려면, 테스트는 다음과 같이보고 끝낼 것 스크립트 소스, 행 번호 및 (때로는) 열 번호 만 표시되므로이 정보는 "이 작업으로 인해 오류가 발생했습니다. 수동으로 스택 추적을 얻으십시오."라고 말하면 유용합니다.

단위 테스트 동안 인턴은 이미 처리되지 않은 오류를 자동으로 잡으려고 시도하고 이러한 종류의 처리되지 않은 오류를 생성하는 코드가 없어야하므로 시스템을 중지시키는 치명적인 오류로 처리합니다.

+0

다른 것들 중에서도 Intern과 TraceKit에 대한이 멋진 작업과 @CSnover에 감사드립니다. 나는'getLogsFor ('browser')'를 사용했지만 모든 브라우저가 그것을 지원하지는 않는다는 것을 깨달았다. 이것은 더 나은 솔루션과 같고 테스트 중에 에이 코드를 추가하여 모든 오류를 잡을 수 있습니다. –

+0

크롬에서 스택을 검색하는 방법 : http://blog.bugsnag.com/js-stacktraces (섹션 : Good) – Kiechlus