経緯 minitest で標準出力の結果をテストしたい時に、どうすればいいのか調べたので記載 結論 assert_output を使えばいけるみたい。 標準出力の期待値があれば、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
![Ruby minitest で標準出力をテストする - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/fc22ade94ede42618f2f8fe805d017e04c31c03e/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UnVieSUyMG1pbml0ZXN0JTIwJUUzJTgxJUE3JUU2JUE4JTk5JUU2JUJBJTk2JUU1JTg3JUJBJUU1JThBJTlCJUUzJTgyJTkyJUUzJTgzJTg2JUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgxJTk5JUUzJTgyJThCJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lZTdiNGU5YjZmMDFjNDhjYWNlNWE1MmViZDA5ZTkzYQ%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwWXV0YWtha0lOSk8mdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWVhNTRmMmYwY2NlZWQ2MGZiYTUzZjgxYzYzNzNmN2I3%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Da0d9ccba743274a28863ba70b44147da)