rspec命令行变量输入

djb*_*ick 9 ruby rspec

我有一个ruby脚本我试图用rspec测试.有没有办法将变量传递给命令行(即通过rspec输入键盘数据到"获取")

例:

username = gets.chomp
Run Code Online (Sandbox Code Playgroud)

zet*_*tic 15

你可以存根Kernel#gets,除了它被混合到对象中,所以在那里存根:

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
Run Code Online (Sandbox Code Playgroud)