Rspec и системное взаимодействие - PullRequest
1 голос
/ 07 апреля 2011

У меня есть программа, которая будет запускать несколько системных команд. Самый простой способ, которым я знаю, как это сделать, - с помощью `` обозначения. Я хотел бы построить тесты для этих инструментов без необходимости запуска этих системных команд в системе.

Есть ли способ, которым я могу посмеяться над ответом системы?

1 Ответ

0 голосов
/ 07 апреля 2011

Если в вашем коде выполняется много внешних команд, вы должны создать простую оболочку и смоделировать ее:

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

...