Rspec命令行测试

时间:2013-09-19 13:04:40

标签: ruby rspec

目前我构建的有以下两行,我想为它们创建一个单元测试:

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

现在我知道我可以这样做:

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

然而,当gem调用$?.exitstatus时,我无法模拟/存根。

有谁知道怎么做?

1 个答案:

答案 0 :(得分: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'

如果不在类范围内调用<{1}},请不要忘记使用存根{/ 1}