で出力をテストする方法がわかりませんputs
。RSPEC ファイルで何をする必要があるかを知る必要があります。
これは私の RSPEC ファイルです。
require 'game_io'
require 'board'
describe GameIO do
before(:each) do
@gameio = GameIO.new
@board = Board.new
end
context 'welcome_message' do
it 'should display a welcome message' do
test_in = StringIO.new("some test input\n")
test_out = StringIO.new
test_io = GameIO.new(test_in, test_out)
test_io.welcome_message
test_io.game_output.string.should == "Hey, welcome to my game. Get ready to be defeated"
end
end
end
これは、テスト対象のファイルです。
class GameIO
attr_reader :game_input, :game_output
def initialize(game_input = $stdin, game_output = $stdout)
@stdin = game_input
@stdout = game_output
end
def welcome_message
output "Hey, welcome to my game. Get ready to be defeated"
end
def output(msg)
@stdout.puts msg
end
def input
@stdin.gets
end
end
注: RSPEC コードを更新して、他の場所で見つかった提案を考慮して、テスト ファイルに加えた変更を反映させました。この問題を完全に解決するために、メイン ファイルで Chris Heald が提案した変更を使用しました。みんなありがとう、そしてクリスに感謝します。