关于Ruby:独立于测试从控制台运行程序

Run program from console independently from tests

我有一个程序应该在控制台中运行。在一个名为my_program.rb的文件中,我有:

1
2
3
class MyProgram
end
MyProgram.new.start

我还有一个单独的my_program_test.rb,每当我想运行测试时,我都需要注释MyProgram.new.start,以避免在控制台中运行程序。

有办法解决这个问题吗?


我不是红宝石专家,但我相信你可以用这样的东西:

1
2
3
if __FILE__ == $0
    MyProgram.new.start
end


使用rspec,您可以在触发该方法的测试之前终止start方法。类似:

1
2
3
before do
  allow_any_instance_of(MyProgram).to receive(:start).and_return(true)
end