2016-12-08 1 views
0

나는 Istanbul API에있는 각 클래스를 훑어 보았지만 "커버리지 객체"를 생성하는 방법을 찾을 수 없었습니다.이스탄불의 coverage.json 객체를 프로그래밍 방식으로 얻으려면 어떻게해야합니까?

인스트루먼트 코드는 전혀 문제가되지 않습니다 :

const istanbul = require('istanbul'); 
const instrumenter = new istanbul.Instrumenter(); 
instrumenter.instrument(sourceCode, filename, (err, instrumentedCode) => { 
    console.log(instrumentedCode); 
} 

그러나 이것은 단지 계측 코드; 커버리지 오브젝트을 생성하기 위해 그것을 실행해야합니다. 그러나 나는 이것을 어떻게하는지 알 수 없다. 물론 나는 이스탄불에 밖으로 껍질과

istanbul cover filename.js 

을 실행하고 발굴과 coverage.json 파일을 구문 분석,하지만 난하지이 좀 바꿔 싶어 수있다; 나는 메모리에있는 자바 스크립트 프로그램을 다루고 싶다.

CollectorReporter의 메소드와 같이 이스탄불 API의 많은 메소드가 적용 범위 객체를 처리 할 수 ​​있지만 범위 객체가 이미 있다고 가정합니다. 내 질문은 처음에 커버리지 객체를 생성하는 방법이다. 나는 간단한 것을 놓치고 있다고 확신한다. 나는 Instrumenter.lastFileCoverage()이 있다는 것을 알아 차렸다. 나는 것을 시도하고, 광고,이 같은 라인을 포함 제로 범위 개체를 가지고 : (포격없이)

statementMap: 
    { '1': SourceLocation { start: [Object], end: [Object], skip: undefined }, 
    '2': SourceLocation { start: [Object], end: [Object], skip: undefined }, 

내 질문은, 어떻게 메모리에하는 범위 개체를 생성 할 수있다를? 간단한 cover 방법이 누락 되었습니까?

+0

나는이 질문을 게시하면서 _stackoverflow.com/q/39302198/831878의 복제본임을 알게되었습니다. 여기에 내 대답을 삭제하고 다른 질문에 대답했습니다. –

답변

0

공식적인 istanbul api repo의 istanbul-lib-instrument 패키지를 사용하십시오.

표준 istanbul instrumenter's 구현과 다른 방법 lastFileCoverage이 있습니다.

저는 방금 작업 한 프로젝트에서 테스트했는데, 내 경험에 따르면 대체 API (api의 instrumenter)였습니다. 나는 또한 lastFileCoverage 방법을 시도했고 사실 처리 된 마지막 파일에 대해 전체 파일 범위를 제공합니다.

관련 문제