search
LoginSignup
5

More than 5 years have passed since last update.

posted at

Ruby minitest で標準出力をテストする

経緯

minitest で標準出力の結果をテストしたい時に、どうすればいいのか調べたので記載

結論

assert_output を使えばいけるみたい。

assert_output(stdout = nil, stderr = nil) { || ... }
  • 標準出力の期待値があれば、stdout に引数を渡す。
    • 引数に nil を渡すとテストされない
  • 標準エラー出力の期待値があれば、stderr に引数を渡す。
    • 引数に nil を渡すとテストされない
  • 標準出力とエラー出力がどちらも期待値が nil のテストをしたい場合には assert_silent を使う
  • テストしたい処理をブロックで渡す

簡単な使用例

標準出力だけテストする。

require 'minitest/autorun'

class StdoutTest < MiniTest::Test

  def test_puts
    assert_output("std capture\n") { puts "std capture" }
  end

end

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5