Posted almost 6 years ago. Visible to the public.
Testing terminal output with RSpec
When testing Ruby code that prints something to the terminal, you can test that output.
Since RSpec 3.0 there is a very convenient way to do that.
Anything that writes to stdout (like puts
or print
) can be captured like this:
Copyexpect { something }.to output("hello\n").to_stdout
Testing stderr works in a similar fashion:
Copyexpect { something }.to output("something went wrogn\n").to_stderr
Hint: Use heredoc to test multi-line output.
Copyexpect { something }.to output(<<-MESSAGE.strip_heredoc).to_stdout Dear Bob, greetings! Love, Alice MESSAGE
makandra has been working exclusively with Ruby on Rails since 2007. Our laser focus on a single technology has made us a leader in this space.