2011-08-06 3 views
3

저는 Ruby에서 명령 줄 응용 프로그램을 작성하고 있습니다. 나는 Rspec 2에 익숙하다. 내가 연구하고있는 일부 레일스 애플리케이션에서 사용되기 때문이다. 명령 줄 응용 프로그램을 작성 중이며 BDD 용 Rspec 2를 사용하려고합니다.Rspec 2를 사용하여 명령 줄 응용 프로그램의 UI 레이어 테스트

내 응용 프로그램의 사용자 인터페이스 계층을 테스트하려면 어떻게해야합니까? 대화 형 입력을 응용 프로그램에 제공하거나 puts를 사용하여 인쇄 된 특정 출력을 확인해야합니다. 또한 STDOUT 출력을 억제하는 방법이 있습니까? 자동 테스트를 실행하면 응용 프로그램의 출력이 rspec의 상태 출력 사이에 인쇄되어 읽기가 매우 어렵습니다.

답변

9

다음은 도움이되는 예제입니다. Minitest로 테스트 한 내 앱 중 하나에서 사용하지만 Rspec으로 쉽게 변환 할 수 있어야합니다. 표준 출력이 StringIO 객체에 기록되기 때문에

def setup 
    $stdout = StringIO.new 
    ... 
end 

이는 시험 결과 사이에 응용 프로그램의 출력를 제거한다. StringIO 객체를 정규 표현식과 비교하여 검사 할 수 있으므로 특정 결과가 출력되는지 여부를 테스트 할 수있는 것과 같은 방법입니다.

+0

정확히 내가 필요한 것입니다! 감사. – sensae

관련 문제