From: Joe Van Dyk Date: 2005-08-27T06:50:32+09:00 Subject: Re: stringio as file On 8/26/05, Joe Van Dyk wrote: > On 8/26/05, Joe Van Dyk wrote: > > On 8/26/05, Joe Van Dyk wrote: > > > StringIO can be used as a standin for a File object when testing, right? > > > > > > require 'stringio' > > > > > > def expects_file file > > > file.open > > > puts file.gets > > > end > > > > > > s = StringIO.new "Hello World\nHow are you?" > > > expects_file s > > > > > > What don't I understand here? > > > > Ah, nevermind. I forgot File.open is a class method. > > This still confuses me though: > > require 'stringio' > > a = StringIO.new > a << "Hello\n" > a << "World" > > puts a.gets # prints nil And further confusion: require 'stringio' a = StringIO.new a << "Hello\n" a << "World" puts "a: #{ a.gets }" b = StringIO.new "Hello\nWorld" puts "b: #{ b.gets }" Results in: a: b: Hello So it appears that StringIO#<< isn't doing what I think it should be doing. There's not much documentation on that method at ruby-doc.org or in the Pickaxe2 book.