いくつかのパブリックメソッドから呼び出されるいくつかのプライベートメソッドを持つRSpec2でクラスをテストしようとしています。私はパブリックメソッドをテストします
_@foo.should_receive(:start_training).exactly(2).times
_
それらが呼び出された場合、その頻度。私の問題は、このアプローチがプライベートメソッドで機能しないことです。それで、@foo.send(:private_method)
のようなsthを_should_receive
_と組み合わせて使用する方法はありますか?または他の構文?
should_receive(:method)は、:methodがパブリックでもプライベートでも機能します...
_allow_any_instance_of
_メソッドを使用して、クラスのインスタンスをスタブまたはモックすることができます。 class
という名前のFoo
があり、いくつかのprivate
メソッドを使用すると、このようなことができます
_allow_any_instance_of(Foo).to receive(:private_method) do
#do something
end
_
module
もある場合は、次のようにすることができます
_allow_any_instance_of(Module::Foo).to receive(:private_method) do
#do something
end
_
allow_any_instance_of()
メソッドの詳細については、 公式ドキュメント を参照してください。
なぜプライベートメソッドをテストしたいのですか?理由のために非公開です。外線からのアクセスを防ぐため。プライベートメソッドに依存するパブリックメソッドのテストで十分です。