我正在学习 rspec,我想知道为调用其他方法链的方法编写规范的最有效方法是什么。例如:
class Example1
def foo(dependency)
dependency.bar("A")
dependency.baz("B")
dependency.bzz("C")
end
end
理想情况下,我想编写这样的规范:
it "should call bar" do
ex = Example1.new
dep = mock
dep.should_receive(:bar).with("A")
ex.foo(dep)
end
it "should call baz"
...
it "should call bzz"
...
但是,当我这样做时,我(可以理解)得到诸如“意外方法调用 baz”之类的异常。
那么处理这个问题的最佳方法是什么?我提出了一些想法,但我不知道其中任何一个是否好。
- 使模拟依赖项成为“as_null_object”,以便它忽略额外的调用。(不利的一面 - 如果我在该对象上调用不需要的随机内容,我不会知道)
- 将每个规范中两个未使用的依赖方法调用存根(Down side - 感觉非常干燥)
- 在“之前”中存根所有三个依赖调用(不利的一面 - 在“之前”中放置了很多垃圾)