Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rspec commandline variable input

Tags:

ruby

rspec

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
like image 348
djburdick Avatar asked Jan 05 '11 22:01

djburdick


1 Answers

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
like image 138
zetetic Avatar answered Oct 20 '22 02:10

zetetic