Если в вашем коде выполняется много внешних команд, вы должны создать простую оболочку и смоделировать ее:
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, чтобы вам не приходилось передавать его методу, конечно.