LoginSignup
10
5

More than 5 years have passed since last update.

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

Posted at

経緯

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

参考

10
5
0

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
  3. You can use dark theme
What you can do with signing up
10
5