使用rspec进行测试时,是否可以检查传递给非静态方法的参数?
如果我想要测试A类,在A类中我称之为B类,B已经过测试。我唯一想测试的就是B的进入论证。
class A
def method
number = 10
b = B.new
b.calling(number)
end
end
class B
def calling(argument)
# This code in this class is already testet
end
end
如何测试b.calling
的输入参数?
到目前为止,我已经尝试过,但没有成功。
it "should work" do
b = mock(B)
b.should_receive(:calling).at_least(1).times
A.new.method
end
总是失败,因为b
从未被召唤过。
答案 0 :(得分:4)
你的规范中的b不是b A是实例化的(当你调用new时它会返回一个真实的B实例,因为你没有存根),试试这个:
it "should work" do
b = mock(B)
B.should_receive(:new).and_return(b)
b.should_receive(:calling).at_least(1).times
A.new.method
end