के लिए मजाक उड़ाता है मैं एक वर्ग है, जहां मैं इसे (माना statActor
) अभिनेता को संदेश भेजता है कि जांच करने की आवश्यकता के लिए एक स्पॉक परीक्षण बनाने के लिए कोशिश की है। मुझे पता है कि अक्का के पास एकीकरण परीक्षण के लिए विशेष पुस्तकालय है, लेकिन ऐसा लगता है कि यह बहुत ही सरल परीक्षण के लिए बहुत अधिक है। तो, मैं कोशिश की है:स्पॉक अक्का के ActorRef
setup:
def myActor = Mock(ActorRef)
myService.statActor = myActor
when:
myService.startStats()
then:
1 * myActor.tell(_)
लक्ष्य विधि की तरह दिखता है:
void startStats() {
Date x = null
// prepare some data, fill x with required value
this.statActor.tell(x)
}
मैंने सोचा था कि स्पॉक एक विधि tell
साथ नकली पैदा करेगा। लेकिन इस परीक्षण चलाने के बाद मैं हो रही है:
java.lang.ClassCastException: akka.actor.ActorRef$$EnhancerByCGLIB$$80b97938 cannot be cast to akka.actor.ScalaActorRef
at akka.actor.ActorRef.tell(ActorRef.scala:95)
at com.example.MyService.startStats(MyService.groovy:32)
क्यों यह असली ActorRef
कार्यान्वयन कॉल कर रहा है? स्कैला के साथ कुछ तरह की असंगतता? क्या इस तरह के वर्ग के लिए नकली बनाने का कोई तरीका है?
"लेकिन लगता है कि यह बहुत ही साधारण परीक्षण के लिए बहुत ज्यादा है" <- मैं पूछ सकता है कि कैसे इस निष्कर्ष किया जाता है, विशेष रूप से विचार कर रहा है कि ठट्ठा करके आप ऐसा नहीं हो पाया की कोशिश की है? –
@ विकटोरक्लंग क्योंकि एक पंक्ति 'डीफ अभिनेता = मॉक (एक्टोररफ)' कम है कि 'टेस्टकिट' के लिए आवश्यक कुछ दर्जन लाइनें हैं। मेरा मतलब है कि यह अन्य वस्तुओं के लिए नकली बना सकता है, ठीक काम करता है और –
@paradigmatic हाँ का उपयोग करने में वास्तव में आसान है, मुझे पता है। शायद मैं कड़ी सवाल पूछ रहा हूं, लेकिन मैं यहां क्या कर सकता हूं? :( –