「初めての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