Ti aktoři jsou špatně napsaní. Když dostane správu "OK" tak na ni odpoví taky "OK". Prostě chyba.
Kacirska myslenka... :-)
Co na to napsat testy?
Úplně nevím, jak by to mohlo pomoct, ale nebráním se tomu. Jak?
Je fakt, že aktory se testují blbě, protože aktor je vlastně izolovaná jednotka se skrytým mutable stavem a funkcí
receive s typem
Any => Unit (čti jako "spolknu cokoliv a možná udělám nějaký sideeffect"). Takže se při práci s aktory musíš prát s mutable stavem a navíc přicházíš o všechny kontroly, které normálně poskytuje statický typový systém. Možná proto taky např. Erlang statický typový systém nemá.
I tak ale nevidím problém v tom napsat alespoň test, který spawne dva aktory, nechá jednoho poslat druhému zprávu ok, a zkontroluje, že zpátky přišla právě jedna odpověď ok, pokud je to zamýšlené chování. Bohužel díky tomu skrytému mutable stavu není zaručené, že když to tak dopadlo jednou, dopadne to tak i podruhé.
Jen pro zajímavost, je dost problémů, které někdo řeší aktory, ale lépe se na ně hodí FRP. Tam naopak funguje statický typový systém bezvadně, obejde se to bez mutable stavu, takže se nad tím daleko líp uvažuje, je to víc komponovatelné. Nějaké shrnutí pro a proti jsem našel tady:
https://cs.stackexchange.com/a/9042Ale samozřejmě záleží na konkrétním problému, na spoustu věcí aktory jsou ideální řešení.