假设我们有以下代码:
class A
def create_server
options = {
name: NameBuilder.new.build_name
}
do_some_operations(options)
end
end
为了测试这些方法,我曾经使用过allow_any_instance_of
:
it 'does operations' do
allow_any_instance_of(NameBuilder).to receive(:build_name)
# test body
end
但是由于几个原因,文档建议我们不要使用它。那么如何避免allow_any_instance_of
呢?我只找到了一种解决方案:
class A
def create_server
options = {
name: builder.build_name
}
do_some_operations
end
private
def builder
NameBuilder.new
end
end
但是使用这种方法,代码很快就会充满几乎无用的方法(尤其是当您在所描述的类中积极使用不同对象的组合时)。