मैं एक नियंत्रक का परीक्षण कर रहा हूं जिसके लिए एक स्वचालित सेवा की आवश्यकता है।
मैंने कई जगहों पर पढ़ा (उदाहरण Mockito: मॉकिंग के साथ मेरी सेवा का परीक्षण कैसे करें ?) मुझे इसे इस तरह करने की ज़रूरत है
@RunWith(JUnitPlatform.class)
public class AdminControllerTest {
@Mock
private AdminService service;
@InjectMocks
private AdminController adminController;
@Test
public void registerUser() {
Boolean resultReal = adminController.registerUser();
assertTrue(resultReal);
}
}
लेकिन यह विफल है और मैं देख रहा हूँ क्योंकि adminController रिक्त है
इसके बजाय, अगर मैं इस तरह नियंत्रक बना देता हूं
AdminController adminController = new AdminController();
यह काम करता है, लेकिन फिर मैं नकली इंजेक्शन लगा सकता हूं।
शायद मुझे कुछ याद आ रहा है
1 उत्तर
प्रति InjectMocks के लिए दस्तावेज़:
एनोटेट ऑब्जेक्ट्स को इनिशियलाइज़ करने के लिए MockitoAnnotations.openMocks(this) मेथड को कॉल करना होगा। उपरोक्त उदाहरण में, openMocks() को टेस्ट के बेस क्लास के @Before (JUnit4) मेथड में कॉल किया जाता है। JUnit3 के लिए openMocks() बेस क्लास के setup() मेथड पर जा सकते हैं। इसके बजाय आप अपने जुनीट रनर (@RunWith) में openMocks() भी डाल सकते हैं या बिल्ट-इन MockitoJUnitRunner का उपयोग कर सकते हैं।
इस प्रकार, या तो:
- परीक्षण चलने से पहले कहीं
openMocks(this)
पर कॉल करें या - कक्षा में
@RunWith(MockitoJUnitRunner.class)
का प्रयोग करें
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
testing
सॉफ्टवेयर परीक्षण किसी भी गतिविधि है जिसका उद्देश्य किसी कार्यक्रम या प्रणाली की विशेषता या क्षमता का मूल्यांकन करना और यह निर्धारित करना है कि यह इसके आवश्यक परिणामों को पूरा करता है।