経緯
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