[rspec-users] rspec and testing IO

Justin Beck justinbeck at mac.com
Thu Sep 8 17:03:50 EDT 2011

I have a class that expects some input via 'gets'.  I found that, when testing, I can do something as simple as this:

@foo.stub!(:gets) { "stuff\n" }

However that only works in the most simple case.  In my case the class asks a series of questions that require a yes/no answer culminating in some end state.  The class then asks if the user would like to go through the questions again and waits for a response of yes/no.  If I want to test a single run through the questions (answering 'yes' to all of them) and I stub 'gets' to always reply with 'yes' then I have no way of breaking out of the loop.  The test I'm running dies and complains of the stack being too deep.

So, my question is this:

How do folks typically go about testing classes that take input from stdin?  I can post more code if necessary but this is a pretty simple question to which, I'm sure, there is a reasonable solution.



More information about the rspec-users mailing list