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