मैं इस समय मॉकिटो सीख रहा हूं और मेरी सीख को मजबूत करने के लिए मैं जो कुछ कर रहा हूं, वह एक पुराने जुनीट टेस्ट को हाथ से लुढ़का हुआ नकली वर्ग का उपयोग करने से बदल रहा है जो इसके बजाय मॉकिटो मैक्स का उपयोग करता है। हालांकि, मैंने एक परिस्थिति में भाग लिया है, मुझे यकीन नहीं है कि कैसे संभालना है।क्या मॉकिटो मॉक ऑब्जेक्ट को पास किए गए तर्कों के खिलाफ पूछना संभव है?
विशेष रूप से, परीक्षण के तहत मेरी इकाई String
बनाती है जो उस पर एक विधि कॉल में पैरामीटर के रूप में मॉक ऑब्जेक्ट को पास की जाती है। मैं परीक्षण करना चाहता हूं कि String
सही ढंग से बनाया गया है। चुनौती यह है कि String
का हिस्सा एक हैश कुंजी है जो आंतरिक रूप से उत्पन्न होता है और प्रत्येक आमंत्रण पर परिवर्तन होता है। एक समाधान जो काम करेगा, हैश पीढ़ी को मेरे नियंत्रण में प्राप्त करना होगा और परीक्षण निष्पादन के लिए एक डमी जेनरेटर इंजेक्ट करना होगा। हालांकि, यह एक उचित काम है।
मेरा पुराना हाथ लुढ़का हुआ मॉक क्लास उस परीक्षा को संग्रहीत करेगा जो मैं अपने परीक्षण में पूछ सकता हूं। यह मैं निम्नलिखित के माध्यम से शुरू करने और String
के अंत क्वेरी करने के लिए अनुमति दी:
assertTrue(mockFtpClient.getFilePathAndName().startsWith("/data/inbound/XJSLGG."));
assertTrue(mockFtpClient.getFilePathAndName().endsWith(".pdf"));
यह मेरा स्वाद के लिए एक पर्याप्त पर्याप्त परीक्षण किया गया था। तो मेरा सवाल यह है कि क्या मॉकिटो को क्वेरी करने या किसी विधि को पारित तर्कों को पकड़ने के लिए संभव है ताकि मैं उपरोक्त के समान कुछ कर सकूं?
अद्यतन 24/06/2011: इस बिंदु पर मैंने गॉन के जवाब को छोड़ दिया है। हालांकि, मैंने तब से कुछ खोजा है जो मेरे लिए बेहतर काम करता है। अर्थात् ArgumentCaptor
। यहाँ यह कैसे काम करता है:
ArgumentCaptor<String> fileNameArgument = ArgumentCaptor.forClass(String.class);
verify(mockFtpClient).putFileOnServer(fileNameArgument.capture());
assertTrue(fileNameArgument.getValue().startsWith(START_FILE_NAME) &&
fileNameArgument.getValue().endsWith(END_FILE_NAME));
Mockito राज्य के लिए जावाडोक कि ArgumentCaptor
आम तौर पर एक बेहतर विकल्प है कि आप एक बंद विशिष्ट तर्क मिलान आवश्यकता है जब, के रूप में मैं यहाँ से करते हैं।
अद्यतन के लिए धन्यवाद, मुझे ArgumentCaptor के बारे में पता नहीं था। –
ArgumentCaptor मेरे (कोडिंग) जीवन को बदलने जा रहा है! –