RSpecで標準出力の内容をテストする
標準出力される内容をテストする内容を調べたところ、素晴らしいエントリーを見つけたので忘れないようにメモ
# -*- coding: utf-8 -*- require "rspec" class Target def some_method(msg) print msg end end # this method is written by wycats def capture(stream) begin stream = stream.to_s eval "$#{stream} = StringIO.new" yield result = eval("$#{stream}").string ensure eval("$#{stream} = #{stream.upcase}") end result end describe "Object#capture" do before(:each) do @target = Target.new end it do capture(:stdout) { @target.some_method("test") }.should == "test" end end
全く同じような内容の質問が Rails Best Practice にも載っていたのでそちらもメモ