In Ruby, I need to print a feedback message and then exit with a status code of 1.
class Foo
def bar
puts "error"
exit 1
end
end
In RSpec, how can I ignore exit 1
when expecting the feedback message to be printed?
it "returns a feedback message" do
expect { Foo.new.bar }.to output(/no error/i).to_stdout
end
If I run the spec above, no failure is raised.
Finished in 0.02402 seconds (files took 0.17814 seconds to load)
1 example, 0 failures
You could use allow
to capture the exit
message inside your Foo
instance:
describe '#bar' do
let(:foo) { Foo.new }
it "returns a feedback message" do
allow(foo).to receive(:exit)
expect { foo.bar }.to output(/no error/i).to_stdout
end
end
This will effectively install a new method Foo#exit
that does nothing by default, see the RSpec docs on
Allowing messages.