java - Spring inject mocked Bean -
मैंने एक रिपॉजिटरी के आधार पर एक सत्यापन बाधा बनाई है।
सार्वजनिक वर्ग PersonValidator ConstraintValidator { @ स्वामित्व निजी व्यक्ति रिपोजिटरी व्यक्ति रिपोजिटरी; @ ओवरराइड पब्लिक रिक्त इनिशियलाइज़ (पर्सनवैलीटाइटर व्यक्ति वैलिडेटेटर) {} @ ओवरराइड पब्लिक बूलियन हैवालिड (व्यक्ति व्यक्ति, संयतवास्तविक कंटेंट संदर्भ) {वापसी नल! = रिपोजिटरी.फिडबायनाम (व्यक्ति.गेटनाम ()); }} मान्यकर्ता का परीक्षण करना PersonValidator का मजाकिया करना आसान है, लेकिन उदाहरण के लिए सत्यापन संदेश को जांचने के लिए मैं सत्यापनकर्ता के साथ एकीकरण का परीक्षण करना चाहता हूं। <पूर्व> सार्वजनिक वर्ग PersonValidatorTest {@ एटोवायर निजी वैलीडेट सत्यापनकर्ता; @Test सार्वजनिक शून्य एकीकरण () {व्यक्ति व्यक्ति = नया व्यक्ति (); person.setName ( "व्यक्ति"); सेट करें & lt; ConstraintViolation & LT; व्यक्ति & gt; & gt; बाधा विरोधाभास = सत्यापनकर्ता। वैधता (व्यक्ति); Assert.assertEquals (0, बाधाओं का उल्लंघन।) ()); }} मुझे नहीं पता कि कैसे PersonValidator अंदर सत्यापनकर्ता को मोकोर्ड रिपॉजिटरी के साथ इंजेक्ट करना है। < SpringJUnit4ClassRunner के साथ परीक्षण चलाने की कोशिश करें, और वसंत के @ प्राथमिक भाषण या बीन की परिभाषा में प्राथमिक के रूप में चिह्न के साथ एक नकली भंडार सेम बनाएं और एनोटेट करें। परीक्षा के लिए नकली रिपॉजिटरी autowire। @RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (स्थानों = {"/context.xml", "/test-context.xml"}) सार्वजनिक वर्ग PersonValidatorTest {@Autowired Private Validator validator; .... आप नीचे नकली कारखाना बीन का उपयोग कर नकली भंडार बना सकते हैं
सार्वजनिक वर्ग MockitoFactoryBean & lt; T & gt; फैक्टरी बीन & lt; T & gt; लागू करता है {निजी वर्ग & lt; T & gt; classToBeMocked; सार्वजनिक MockitoFactoryBean (कक्षा & lt; T & gt; classToBeMocked) {this.classToBeMocked = classToBeMocked; } @ ओवरराइड पब्लिक टी प्राप्त ऑब्जेक्ट () अपवाद को फेंक देता है {return Mockito.mock (classToBeMocked); } .... और फिर वसंत का संदर्भ फ़ाइल 'test-context.xml' परीक्षण रिपॉजिटरी के लिए बनाएं
& lt; bean id = "mockRepository" प्राथमिक = "सच" वर्ग = "com.test.mock.MockitoFactoryBean" & gt; & Lt; constructor-arg मान = "कॉम .... व्यक्ति रिपोजिटरी" / & gt; & Lt; / सेम & gt;
Comments
Post a Comment