Thách thức
Xin chào! Đối với phương thức Ruby sau đây, làm thế nào tôi có thể mô phỏng đầu vào của người dùng bằng cách sử dụng một kiểm tra RSpec mà không cần viết lại phương thức này?Làm cách nào để viết một bài kiểm tra RSpec cho một phương thức Ruby có chứa "gets.chomp"?
def capture_name
puts "What is your name?"
gets.chomp
end
Tôi đã tìm thấy a similar question, nhưng phương pháp này yêu cầu tạo bằng cách sử dụng lớp học. RSpec có hỗ trợ stubbing cho các phương thức không có trong lớp không?
Một tác phẩm khác nhau, nhưng tôi buộc phải viết lại phương pháp
tôi có thể viết lại phương pháp này vì vậy nó có một biến với giá trị mặc định của "gets.chomp" như thế này:
def capture_name(user_input = gets.chomp)
puts "What is your name?"
user_input
end
Bây giờ tôi có thể viết một bài kiểm tra RSpec như thế này:
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