我想要習慣用簡單的驅動程序片段來測試我的代碼,並且想要測試一個參數錯誤是否在不脫離程序的情況下拋出。這裏是我使用的代碼有沒有辦法從一個方法內測試參數錯誤來返回true或false?
class Die
def initialize(sides)
@sides=sides
unless @sides>0
raise ArgumentError.new("Your number sucks, yo")
end
end
#returns the number of sides of a die
def sides
@sides
end
#generates a random die roll based on the number of sides
def roll
rand(@sides)+1
end
end
這裏是我正試圖調用來獲得測試。
p bad=Die.new(0)=="Your number sucks, yo"
我希望它返回的是「true」。它在終端返回的是:
w3p1_refact.rb:33:in `initialize': Your number sucks, yo (ArgumentError)
from w3p1_refact.rb:69:in `new'
from w3p1_refact.rb:69:in `<main>'
我可以重寫這個以返回我在找什麼嗎?
我認爲這將有助於拼出用'開始...救援ArgumentError => e ... end'塊來拯救,這樣它就完全清楚你在做什麼,並且還要注意你在這裏的縮短形式不太明顯。 – jeremycole
@jeremycole我認爲它會工作,根據代碼。因爲該消息將被設置,只有當異常來自該部分。否則,它總會是'假'。 –
是的,我知道它的工作原理,但我認爲它作爲解釋的幫助很少。很明顯,提問者不知道「救援」是否正確,如果你要提供一個答案和例子,它應該是一個有用的答案。我的意見當然。 – jeremycole