Ich versuche, alle Nachrichten empfangen von einer TestKit TestProbe zu protokollieren, was sich als etwas schwierig erweist. Ich kenne den Abschnitt Aktesprotokollierung in den Dokumenten wo es heißt, man sollte die Option debug.receive
in Kombination mit einem LogginReceive
-Block verwenden. Dies funktioniert jedoch nicht, wenn ich nicht die Kontrolle über die Implementierung des Schauspielers habe.
Die einzige Idee, die ich hatte, war es, akka.testkit.TestActor
zu untergliedern, um LoggingReceive
und dann die Unterklasse TestKit
zu verwenden, um Instanzen meiner TestActor
-Unterklasse zu erstellen, aber das hat nicht funktioniert, weil die meisten Funktionen dort privat sind in den Namensraum akka
(und aus gutem Grund, nehme ich an).
Tut mir leid, zuerst habe ich deine Frage falsch beantwortet, also hier ist mein Ansatz.
Erstellen Sie einen Wrapper-Akteur, der die Nachrichten protokolliert:
%Vor% und dann erstellen Sie einfach Ihre TestActorRef
mit Ihrem Schauspieler in der LoggingActor
:
Es gibt eine (wahrscheinlich überraschend) einfache Antwort:
%Vor%Mit Ronalds Antwort habe ich das geschrieben, um einen einfacheren Weg zu haben, meine Sonden zu definieren:
%Vor% Damit definiere ich meine Sonden mit LoggingTestProbe()
anstelle von TestProbe()
.
Ich bin neu bei Scala, also ist das vielleicht nicht optimal, aber funktioniert super für mich.