2013-09-19 4 views
0

В настоящее время я утра сборки имеет следующие две строки, которые я хочу, чтобы создать модульный тест для:Rspec тест командной строки

system @command.join(' ') 
exit $?.exitstatus 

Теперь я знаю, что могу сделать что-то вроде этого:

Kernel.should_receive(:system).with() 
Kernel.should_receive(:exit).with(0) 

Однако, когда звонит драгоценный камень $?.exitstatus Я не мог издеваться над этим.

Кто-нибудь знает, как это сделать ???

ответ

0

this на основе

Вы должны окурок не Kernel, вы должны окурок system из текущего класса.

, например

#user.rb 
def self.my_test 
    system('ls') 
end 

#test 
User.should_receive(:system).and_return('aaa') 
User.my_test # => 'aaa' 

Не забудьте использовать заглушки для any_instance если она вызвана не в области видимости класса

+0

Спасибо за обратную связь, я дам этот водоворот :) –

+0

Привет, Дал это назад и теперь он работает как задумано с нижеследующим, в моем случае, так или иначе: 'Cukesparse.should_receive (: система) .с («тест»)' ' Cukesparse.should_receive (: выход)' Cheers, Jon –

Смежные вопросы