2014-09-01 3 views
2

mocha.js에서 테스트에 실패 할 수있는 한계가 200ms이므로 CLI 응용 프로그램을 테스트하고 테스트가 실행되는 동안 사용자 입력을 받고 싶습니다. 그래서 스크립트가 입력을 받고 그것을 얻은 후에 다시 시작하는 동안 테스트를 중단하는 방법을 알고 싶습니다.mocha.js가있는 CLI 응용 프로그램 테스트

+0

어떤 종류의 테스트를 작성합니까? 일반적으로 자동 테스트는 사용자 입력에 의존해서는 안되며 스스로 실행해야하므로 자주 실행해야합니다. 비동기 테스트를 작성해서는 안되지만 사용자가 테스트 코드에 입력해야하는 입력을 하드 코딩하는 것을 고려하십시오. – thriqon

+0

나는 유효성 검사 오류가있는 경우를 대비하여 사용자 입력을 요구하는 옵션 파서를 만들고 있는데이를 시뮬레이션하려고합니다. Bulkan이 지적했듯이 나는 stream-expect를보고 그것이 효과적인지 아닌지를 볼 것입니다. –

답변

-2

비동기 테스트를 수행해야합니다. done 인수를 추가하고 완료하면 호출하십시오. http://visionmedia.github.io/mocha/ - 확인 샘플 용 비동기 코드 섹션

http://jsfiddle.net/iskomorokh/3jnoyovb/9/

+0

사용자가 타임 아웃 지연 전에'done() '을 호출하기에 충분히 빠른 응답을하지 않으면 Mocha는 여전히 시간 초과되므로 비동기 테스트를 만드는 것이 도움이되지 않습니다. – Louis

+0

@ 루이스 이걸 확인해주세요 :'(프롬프트) ', 기능 (완료) { var person = 프롬프트 ("귀하의 이름을 입력하십시오", "해리포터"), if (person) {done()}; })'이벤트를 대기하는 경우 이름을 입력하면 10 초가 지나면 테스트가 실패하지 않습니다. –

+0

** 귀하가 제안하는 것을 ** 완전하고 입증 된 ** 예가 있다면 귀하의 답변에 넣어주십시오. – Louis

0

당신과 같이 시험 시간 제한을 증가시킬 수있다;

describe('increased timeout', function(){ 
    it('should not timeout', function(done){ 
    this.timeout(2000); 
    setTimout(done, 1500); 
    }); 
}); 

하지만 이렇게하지 않는 것이 좋습니다. nexpect 또는 stream-expect을 사용하여 사용자 입력을 시뮬레이트 할 수 있습니다. 이렇게하면 자동화 된 테스트를 많이 작성할 수 있습니다.

예제 사용 stream-expect