Ich möchte einen Akteur, der sich selbst an den lokalen Port bindet, mit dem Tcp IO-Manager z. B.
testen %Vor%Was ich am liebsten machen würde, ist eine TestProbe anstelle des IO-Managers. Dies hat den zusätzlichen Vorteil, dass ein Komponententest keine TCP-Verbindung öffnet.
Ist das möglich und wenn ja, könnte jemand bitte ein Beispiel dafür geben, wie es geht?
Es gibt wahrscheinlich ein paar Möglichkeiten, dies zu erreichen. Ich werde ein Paar in der Hoffnung weitergeben, dass eines für dich arbeitet. Beachten Sie, dass das Aufrufen von IO(Tcp)
nur ein ActorRef
erzeugt. Alles, was Sie tun müssen, ist einen Weg zu finden, vor diesem Aufruf zu spielen und dann mit diesem Schauspieler zu arbeiten. Hier sind ein paar Codebeispiele, die ein paar Lösungen (eine Art von DI wie) zeigen:
Dieser erste erstellt eine Methode zum Zurückgeben des tcp-Managers und überschreibt sie dann im Komponententest.
%Vor%Dieser zweite ist sehr ähnlich, übergibt aber stattdessen den tcp-Manager in den Konstruktor.
%Vor% Eine dieser Funktionen könnte für dich funktionieren, aber auch hier gibt es keine wirkliche Magie, solange du verstehst, dass der Aufruf von IO(Tcp)
nur eine ActorRef