2016-01-26 9 views
7

मैं निर्भरता वाले स्कैला वर्ग के तरीकों में से एक को रोकना चाहता हूं। क्या ScalaMock का उपयोग करके इसे हासिल करने का कोई तरीका है?स्कैला मॉक आंशिक स्टबिंग

class TeamService(val dep1: D1) { 

    def method1(param: Int) = param * dep1.magicNumber() 

    def method2(param: Int) = { 
    method1(param) * 2 
    } 
} 

इस उदाहरण में method1() उपहास करने के लिए मैं चाहता हूँ:

यहाँ मैं क्या है की एक सरल उदाहरण है। मेरा परीक्षण इस तरह दिखेगा:

val teamService = ??? // creates a stub 
(teamService.method1 _).when(33).returns(22) 
teamService.method2(33).should be(44) 

क्या यह हासिल करने का कोई तरीका है?

+0

मुझे लगता है कि यदि आप कुछ कक्षा का मज़ाक उड़ा रहे हैं, तो आप इसके कार्यान्वयन पर निर्भर नहीं रहना चाहते हैं, लेकिन अब आप 'method1' और' D1' के कार्यान्वयन पर निर्भर रहने की कोशिश कर रहे हैं। हो सकता है कि पर्याप्त जानकारी न हो लेकिन आपको शायद उन सभी विधियों का नकल करना चाहिए जिन्हें आपको उपयोग करने की आवश्यकता है। –

+0

इस पर आपका संकल्प क्या है? –

+0

स्कैला मॉक की तरह दिखता है इस सुविधा का समर्थन नहीं करता है :( – Danix

उत्तर

0

आपको dep1: D1 नकल करना होगा, इसलिए सब कुछ ठीक से काम करेगा। यह "आधा" या केवल कुछ तरीकों के नकल के लिए एक अच्छा तरीका नहीं है।

मॉकिंग dep1: D1 इसका परीक्षण करने का सही तरीका है।

val mockD1 = mock[D1] 
val teamService = new TeamService(mockD1) 
(mockD1.magicNumber _).returns(22) 
teamService.method2(33).should be(44) 
संबंधित मुद्दे