2011-04-07 7 views
1

여러 가지 시스템 명령을 실행하는 프로그램이 있습니다. 가장 간단한 방법은``표기법을 사용하는 것입니다. 나는 실제로이 시스템 명령을 시스템에서 실행하지 않고이 도구에 대한 테스트를 만들고 싶습니다.Rspec 및 시스템 상호 작용

시스템의 응답을 조롱 할 수있는 방법이 있습니까?

+3

이 시스템 명령어에 대한 래퍼 작성 방법은 무엇입니까? 그리고 그들로부터 repsonses를 조롱. –

+0

그건 폴백으로 작동 하겠지만, 10 번 중 9 번은 Ruby가 모든 문제를 해결할 간단한 마법 명령을 가지고 있음을 발견했습니다. 나는 이것이 이것이 처음이 아니 었 으면 좋겠다. ;) – Drew

답변

0

코드가 외부 명령을 많이 실행하는 경우 간단한 래퍼 및 모의 그 만들어야합니다

def wants_to_run_external_command(command_runner) 
    command_runner.run('echo "hello world"') 
end 

과 같이 테스트 :

it 'echos "hello world"' do 
    command_runner = double() 
    command_runner.should_receive(:run).with('echo "hello world"') 
    subject.wants_to_run_external_command(command_runner) 
end 

당신이 당신에게 깔끔한 싶은 경우 물론 runner 인스턴스를 사용하여 객체를 초기화해야하므로 메서드에 전달할 필요가 없습니다.