「初めてのRuby」の復習(入出力)
入出力はexpectationsに書き下すのが面倒そうなので普通に例文を写経。
ユニットテストだと、こういう外部リソースとのアクセスが絡むとどう扱うか悩みます。DBアクセス(接続確立〜データ取得)、ファイル情報取得、ログ出力、認証付のWebアクセス・・・セオリーで言えば「モックを使え」ってことになるけれど、この場合は入出そのものを扱いたいからそこをモックにしたら何をか言わんや、という。この辺りは「テストできない」と割り切ってしまったほうがよいんでしょうか。
# -*- coding: utf-8 -*- #引数 exp = ARGV.join(" + ") total = ARGV.inject(0) do |subtotal, n| subtotal + n.to_i # 引数は明示的に整数化して加算 end puts "#{exp} = #{total}" #ファイル File.open("first-ruby5.rb", "r") do |f| f.each_line do |line| puts "// #{line.chomp} //" end end #StringIO require 'stringio' buf = String.new sio = StringIO.new(buf) $stdout = sio puts "foobar" $stdout = STDOUT puts buf