rspecを使用して2つのユーザー入力を受け取るメソッドをスタブするにはどうすればよいですか?出来ますか?
class Mirror
def echo
arr = []
print "enter something: "
arr[0] = gets.chomp
print "enter something: "
arr[1] = gets.chomp
return arr
end
end
describe Mirror do
it "should echo" do
@mirror = Mirror.new
@mirror.stub!(:gets){ "foo\n" }
@mirror.stub!(:gets){ "bar\n" }
arr = @mirror.echo
#@mirror.should_receive(:puts).with("phrase")
arr.should eql ["foo", "bar"]
end
end
これらの仕様では、@ mirror.echoからの戻り値は["bar"、 "bar"]であり、最初のスタブが上書きされるか、無視されることを意味します。
また、@ mirror.stub!(:gets){"foo \ nbar \ n"}を使用してみましたが、@mirror.echoは["foo\ nbar \ n"、 "foo \ nbar\n"]を返します。