मैं एक्का टेस्टकिट के साथ स्कालाटेस्ट का उपयोग यूनिट लिखने और एक अभिनेता के लिए एकीकरण परीक्षण के लिए कर रहा हूं जिसे मैंने किसी अन्य अभिनेता को किसी भी आंतरिक राज्य को बिना किसी संदेश के भेजने के लिए कोड भेजा है। उदाहरण के लिए यह लो:मैं एक अक्का अभिनेता का परीक्षण कैसे करूं जो किसी अन्य अभिनेता को संदेश भेजता है?
class MyActor extends Actor {
val anotherActor = context.actorOf(Props[AnotherActor])
def receive: Receive = {
case MyMessage => anotherActor ! AnotherMessage
}
}
मैं एक परीक्षण है कि पुष्टि की है कि anotherActor
MyActor
प्रसंस्करण MyMessage
का एक परिणाम के रूप में संसाधित AnotherMessage
लिखना चाहते हैं।
val testActorRef = TestActorRef(new MyActor)
"MyActor" should "change some internal state when it receives MyMessage" in {
testActorRef ! MyMessage
testActorRef.underlyingActor.someState shouldBe "altered"
}
लेकिन मेरे मामले में मैं इस तरह के स्थिति के बारे में परवाह नहीं है में: क्लासिक उदाहरण TestActorRef
उपयोग करने के लिए अंतर्निहित अभिनेता पर मिलता है और कुछ आंतरिक स्थिति है कि इतनी तरह संदेश प्राप्त होने पर प्रभावित किया जाना चाहिए था की जांच करने के लिए है। वास्तव में, मैं इस तरह के किसी भी राज्य को पकड़ने से बचना चाहता हूं। TestProbe
काफी कुछ नहीं था जिसे मैं ढूंढ रहा था क्योंकि आपको अभी भी अभिनेता के साथ TestProbe.ref
पंजीकरण करना है। अधिकांश भाग के लिए, मैंने परीक्षण पर अक्का दस्तावेज के सभी उदाहरणों को देखा है (http://doc.akka.io/docs/akka/snapshot/scala/testing.html) लेकिन कुछ भी उपयुक्त नहीं मिला है।
बिल्कुल वही जो मैं खोज रहा था! मैंने बाल कलाकारों को एक विधि के साथ बनाने का भी विचार नहीं किया था जिसे मैं 'TestProbe.ref' में छोड़ने के लिए ओवरराइड कर सकता था। धन्यवाद @cmbaxter, – nmurthy
अगर हम विधि प्राप्त करने के अंदर बनाए गए एक और अभिनेता हैं तो हम यह कैसे करते हैं? –
जावा में इसे कैसे कार्यान्वित किया जा सकता है? –