次のコードがあるとします。
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
ますか?私がたどり着いた解決策は 1 つだけです。
class A
def create_server
options = {
name: builder.build_name
}
do_some_operations
end
private
def builder
NameBuilder.new
end
end
しかし、このようなアプローチでは、コードはすぐにほとんど役に立たないメソッドでいっぱいになります (特に、記述されたクラスでさまざまなオブジェクトの構成を積極的に使用する場合)。