2013-07-10 2 views
1

인턴 테스트 결과를 파일로 출력 할 사용자 정의 기자를 작성하려고하지만로드 블록에 도달했습니다.맞춤형 리포터의 파일에 쓸 수 있습니까?

인턴의 도우 죠 로더를 통해 노드 파일 시스템 API를 확보 할 수 있었지만 writeFile 또는 writeFileSync는 아무 것도하지 않았습니다. 차이점은 writeFileSync가 프로세스를 잠그는 것입니다.

내 기자 코드의 최소 버전 : 나는 콘솔 로그에 쓰기 전화를 교체 할 경우

define(["node_modules/intern/node_modules/dojo/node!fs"], function (fs) { 
    var buffer = ""; 
    return { 
     "/test/pass": function(test) { 
      buffer += test.id + " passed\n"; 
     }, 
     "/test/fail": function(test) { 
      buffer += test.id + " failed\n"; 
     }, 
     "/runner/end": function() { 
      fs.writeFileSync("result.txt", buffer, function (error) { 
       if (error) { 
        throw error; 
       } 
       console.log("File saved"); 
      }); 
     } 
    }; 
}); 

, 내가 예상 데이터를 얻을, 그래서 모든 다른 잘 작동 할 것으로 보인다.

편집 : 수정 된 코드를 작동합니다

define(["node_modules/intern/node_modules/dojo/node!fs"], function (fs) { 
    var buffer = ""; 
    return { 
     "/test/pass": function(test) { 
      buffer += test.id + " passed\n"; 
     }, 
     "/test/fail": function(test) { 
      buffer += test.id + " failed\n"; 
     }, 
     "/runner/end": function() { 
      fs.writeFileSync("result.txt", buffer); 
      console.log("File saved"); 
     } 
    }; 
}); 
+0

노드 또는 브라우저를 사용하여 테스트를 실행하고 있습니까? –

+0

노드를 사용하고 있습니다. 테스트는 로컬 Selenium 서버에 대해 실행되는 기능 테스트입니다. –

답변

1

네, 파일을 작성할 수 있습니다 기자 - 더 lcov reporter가 정확히이 일을합니다. 그러나 인턴 1.2가 릴리스 될 때까지 비동기 I/O 작업은 테스트 실행이 끝날 때 프로세스가 강제 종료되기 때문에 제대로 완료되지 않을 수 있습니다.

+0

그래, 프로세스가 강제로 종료되는 문제는 알지만 writeFileSync 호출이 중단되는 이유를 설명하고 있습니까? lcov 기자가 본질적으로 똑같은 일을하고있는 것 같지만 이스탄불을 통해, 그래서 아마도 내 문제는 어떻게 필자가 파일 시스템을 가져 오는가하는 것입니다. –

+0

동기 함수에는 콜백이 없습니다. –

+0

Doh ... 문제가있는 것처럼 보입니다. 콜백을 제거했는데 이제 작동합니다. 물론 비동기 버전 (facepalm :)에서 변경할 때 다른 서명을 확인하지 않았습니다. –