Моя основная логика заключается в том, чтобы иметь бесконечный цикл, где-то работать, и тестировать его как можно лучше. Причина наличия бесконечного цикла не важна (основной цикл для игр, демона-подобная логика...), и я больше спрашиваю о лучших практиках в отношении такой ситуации.
Возьмем этот код, например:
module Blah
extend self
def run
some_initializer_method
loop do
some_other_method
yet_another_method
end
end
end
Я хочу протестировать метод Blah.run
с помощью Rspec (также я использую 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
?
Перерыв петли в какой-то момент через макет?
... что-то еще?