9

I have a ruby script I'm trying to test with rspec. Is there a way to pass variables to the commandline (ie enter keyboard data via rspec to "gets")

Example:

username = gets.chomp
djburdick
  • 11,762
  • 9
  • 46
  • 64

1 Answers1

15

You can stub Kernel#gets, except that it is mixed into the object, so stub it there:

class Mirror
  def echo
    print "enter something: "
    response = gets.chomp
    puts "#{response}"
  end
end

require 'rspec'

describe Mirror do
  it "should echo" do
    @mirror = Mirror.new
    @mirror.stub!(:gets) { "phrase\n" }
    @mirror.should_receive(:puts).with("phrase")
    @mirror.echo
  end
end
zetetic
  • 47,184
  • 10
  • 111
  • 119