我想創建一個方法,接受用戶輸入。它將用戶輸入變成一個整數,然後從用戶輸入中減去一個。如果用戶輸入不是數字,它也會返回-1。但是測試會引發錯誤。 Ruby方法無法通過Rspec測試
describe '#input_to_index' do
it 'converts a user_input to an integer' do
user_input = "1"
expect(input_to_index(user_input)).to be_a(Fixnum)
end
it 'subtracts 1 from the user_input' do
user_input = "6"
expect(input_to_index(user_input)).to be(5)
end
it 'returns -1 for strings without integers' do
user_input = "invalid"
expect(input_to_index(user_input)).to be(-1)
end
end
這裏是我的方法:
def input_to_index(user_input)
user_input = user_input.to_i
user_input = user_input - 1
return -1 if !user_input.is_a? Numeric
end
後'USER_INPUT = user_input.to_i',它總是*一個'整數',因此是'數字'。因此'if'分支永遠不會匹配。你總是去'else'分支。 –
我想說的是,在你檢查它的地方,'user_input'永遠不會是'Numeric'。因此沒有必要檢查。 –
這是正確的。 – Asdrubal