如何为包含“0”的Ruby方法编写RSpec测试;获取.chomp";? 挑战
嗨!对于下面的Ruby方法,如何在不重写该方法的情况下使用RSpec测试模拟用户输入如何为包含“0”的Ruby方法编写RSpec测试;获取.chomp";? 挑战,ruby,rspec,Ruby,Rspec,嗨!对于下面的Ruby方法,如何在不重写该方法的情况下使用RSpec测试模拟用户输入 def capture_name puts "What is your name?" gets.chomp end 我发现了,但这种方法需要使用类创建。RSpec是否支持对不在类中的方法进行存根 一个不同的方法有效,但我不得不重写这个方法 我可以重写该方法,使其具有一个默认值为“get.chomp”的变量,如下所示: def capture_name(user_input = gets.chomp)
def capture_name
puts "What is your name?"
gets.chomp
end
我发现了,但这种方法需要使用类创建。RSpec是否支持对不在类中的方法进行存根
一个不同的方法有效,但我不得不重写这个方法
我可以重写该方法,使其具有一个默认值为“get.chomp”的变量,如下所示:
def capture_name(user_input = gets.chomp)
puts "What is your name?"
user_input
end
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
require 'stringio'
def capture_name
$stdin.gets.chomp
end
describe 'capture_name' do
before do
$stdin = StringIO.new("James T. Kirk\n")
end
after do
$stdin = STDIN
end
it "should be 'James T. Kirk'" do
expect(capture_name).to be == 'James T. Kirk'
end
end
现在我可以像这样编写RSpec测试:
def capture_name(user_input = gets.chomp)
puts "What is your name?"
user_input
end
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
require 'stringio'
def capture_name
$stdin.gets.chomp
end
describe 'capture_name' do
before do
$stdin = StringIO.new("James T. Kirk\n")
end
after do
$stdin = STDIN
end
it "should be 'James T. Kirk'" do
expect(capture_name).to be == 'James T. Kirk'
end
end
您可以像这样删除标准输入流:
def capture_name(user_input = gets.chomp)
puts "What is your name?"
user_input
end
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
require 'stringio'
def capture_name
$stdin.gets.chomp
end
describe 'capture_name' do
before do
$stdin = StringIO.new("James T. Kirk\n")
end
after do
$stdin = STDIN
end
it "should be 'James T. Kirk'" do
expect(capture_name).to be == 'James T. Kirk'
end
end
谢谢非常有用。