Testowanie dispachera wątków servera

Hej, mam taki kod:

class Dispatcher def run! loop do data = socket.read Thread.new { Worker.new(data) } end end end
I pytanie - jak byście to przetestowali? A może znacie przykłady open source, które pokrywają taki kod testami?

Pierwsze co bym zrobił to wyciągnięcie kodu z loop do osobnej metody:

[code]class Dispatcher
def run!
loop {run_in_loop! }
end

def run_in_loop!
data = socket.read
Thread.new { worker_for(data) }
end

def worker_for(data)
Worker.new(data)
end
end[/code]
…i testował każdą metodę odzielnie.

Swoja drogą dependency injetion by tu mogło pomóc.
Tj. wstrzykujmy zależność dla klasy Thread i Worker i testujemy w odzielnych unitach.

Dodam jeszcze dwie ciekawostki, które mogą się przydać. Z Kernel#loop można wyjść rzucając StopIteration. Listę wszystkich uruchomionych wątków zwróci Thread.list.