पूर्ण प्रकटीकरण: मैं ढांचे का मज़ाक उड़ाकर और मजाक करने के लिए बहुत नया हूं। मैं ScalaMock का उपयोग करने की कोशिश कर रहा हूं क्योंकि यह स्कैलाटेस्ट के साथ उपयोग करने के लिए 'डिफ़ॉल्ट' मॉकिंग फ्रेमवर्क जैसा प्रतीत होता है लेकिन मुझे स्कैलास्ट के साथ संगत किसी भी अन्य ढांचे का उपयोग करने में खुशी है।ScalaMock। एक कक्षा को मॉक करें जो तर्क लेता है
समस्या: मैंने स्काला में एक कक्षा में लिखा है जो सॉकेट से बात करता है। कक्षा में एक प्रकार का पैरामीटर है कि किस प्रकार की सॉकेट से बात करनी है और इसके तर्कों में से एक उस प्रकार के सॉकेट बनाने के लिए एक कारखाना है। यह हस्ताक्षर हैं:
class XScanner[T <: SocketClient](
confPath: String = "/etc/default/configPath",
socketClientFactory: String => T
) extends ScannerBase(path)
मैं तो अपने परीक्षण कोड एक असली सॉकेट से कनेक्ट करने की जरूरत नहीं है, लेकिन मैं काम नहीं कर सकता एक नकली SocketClient की आपूर्ति करके इस वर्ग के लिए इकाई परीक्षण लिखने में सक्षम होना चाहते हैं ScalaMock के साथ यह कैसे करें।
मेरे परीक्षण कोड इस तरह दिखता है:
val t = new XScanner[SocketClient](confPath, (s: String) => mock[SocketClient])
जाहिर
कि संकलन नहीं करेगा क्योंकि SocketClient
एक तर्क के रूप सॉकेट में एक ऐसा पथ की उम्मीद है, लेकिन मैं mock[SocketClient(s)]
फोन नहीं कर सकते क्योंकि है कि एक प्रकार की नहीं है और मैं यह कर सकते हैं mock[SocketClient](s)
पर कॉल न करें क्योंकि नकली इस प्रकार के तर्कों को इसके तर्क के रूप में नहीं लेती है।
तो मैं अपने स्कैनर को पास करने के लिए एक नकली SocketClient
फैक्ट्री कैसे लिख सकता हूं? मैं यह भी काम नहीं कर सकता कि तर्क लेने वाले वर्ग को कैसे नकल करना है!
मैं स्कैलामोक का लेखक हूं। स्कैला का कौन सा संस्करण और स्कैलामोक का कौन सा संस्करण आप उपयोग कर रहे हैं? ScalaMock2 बनाम ScalaMock3 के लिए उत्तर अलग हैं। –
स्कैला के साथ स्कैला मॉक 3 2.10.0 – jangoolie