2
對不起,我在Ruby中是新手。紅寶石拉姆達與執行應當規格
我在RSpec的測試這樣的代碼:
it "if Add get empty string as parameter return 0" do
lambda { StringCalculator.new(5).Add("") }.should == 0
end
它不起作用,因爲拉姆達沒有一個方法,「應該」。最重要的是lambda不會在這種情況下執行!我不確定,請告訴我,如果我不對。
然後我嘗試這樣的代碼:
it "if Add get empty string as parameter return 0" do
lambda { StringCalculator.new(5).Add("") }.call.should == 0
end
,一切都還好,因爲我使用的方法「呼叫」並因此拉姆達執行。
我想如果我們使用lambda方法「調用」,那麼lambda執行。
但後來我嘗試這樣的代碼,而無需調用方法的拉姆達:
it "if Add get empty string as parameter return 0" do
lambda { StringCalculator.new().Add("") }.should raise_exception ArgumentError
end
我不使用「呼」的方法,但不知何故測試通過,就意味着拉姆達被執行,因爲.new().
與沒有參數,拋出異常。
請幫我理解爲什麼在第三種情況下檢測到異常,如果lambda不應該被執行?我不使用電話。
在接受「呼」的方法結果第三種情況是一樣的,我明白爲什麼。
感謝您的幫助。
在StringCalculator類的附加碼:
class StringCalculator
def initialize(x)
@x = x
end
def Add(str)
if str == ""
0
end
end
end