私の基本的なロジックは、無限ループをどこかで実行し、可能な限りテストすることです。無限ループの理由は重要ではありません (ゲームのメイン ループ、デーモンのようなロジックなど)、そのような状況に関するベスト プラクティスについて質問しています。
たとえば、次のコードを見てみましょう。
module Blah
extend self
def run
some_initializer_method
loop do
some_other_method
yet_another_method
end
end
end
Rspec を使用してメソッドをテストしたいBlah.run
(また、 RRを使用しますが、単純な rspec は受け入れられる答えです)。
ループを別のメソッドなどに分離するなど、もう少し分解するのが最善の方法だと思います。
module Blah
extend self
def run
some_initializer_method
do_some_looping
end
def do_some_looping
loop do
some_other_method
yet_another_method
end
end
end
...これによりrun
、ループをテストしてモックすることができます...しかし、ある時点でループ内のコードをテストする必要があります。
では、そのような状況であなたはどうしますか?
このロジックを単にテストしていない、つまりテストsome_other_method
&yet_another_method
ではなくdo_some_looping
?を意味します。
モックを介してある時点でループを中断しましたか?
…他に何か?