Herausforderung
Hallo! Wie könnte ich für die folgende Ruby-Methode Benutzereingaben mit einem RSpec-Test simulieren, ohne die Methode neu zu schreiben?Wie schreibe ich einen RSpec-Test für eine Ruby-Methode, die "gets.chomp" enthält?
def capture_name
puts "What is your name?"
gets.chomp
end
Ich habe a similar question gefunden, aber dieser Ansatz mit einer Klasse erfordert zu schaffen. Unterstützt RSpec Stubbing für Methoden, die keiner Klasse angehören?
eine andere Werke, aber ich bin gezwungen, das Verfahren neu zu schreiben
ich die Methode neu schreiben kann, so dass es eine Variable mit dem Standardwert „gets.chomp“ so hat:
def capture_name(user_input = gets.chomp)
puts "What is your name?"
user_input
end
Jetzt kann ich einen RSpec Test wie folgt schreiben:
describe "Capture name" do
let(:user_input) { "James T. Kirk" }
it "should be 'James T. Kirk'" do
capture_name(user_input).should == "James T. Kirk"
end
end
http://stackoverflow.com/questions/4609872/rspec-commandline-variable-input – ahmet