मैं एक नियंत्रक का परीक्षण कर रहा हूं जिसके लिए एक स्वचालित सेवा की आवश्यकता है।

मैंने कई जगहों पर पढ़ा (उदाहरण 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();

यह काम करता है, लेकिन फिर मैं नकली इंजेक्शन लगा सकता हूं।

शायद मुझे कुछ याद आ रहा है

0
Ulises 2010 7 नवम्बर 2021, 20:51
नियंत्रक परिभाषा दिखाएं और इंजेक्शन निर्भरता शामिल करें।
 – 
Nkosi
7 नवम्बर 2021, 21:39

1 उत्तर

सबसे बढ़िया उत्तर

प्रति InjectMocks के लिए दस्तावेज़:

एनोटेट ऑब्जेक्ट्स को इनिशियलाइज़ करने के लिए MockitoAnnotations.openMocks(this) मेथड को कॉल करना होगा। उपरोक्त उदाहरण में, openMocks() को टेस्ट के बेस क्लास के @Before (JUnit4) मेथड में कॉल किया जाता है। JUnit3 के लिए openMocks() बेस क्लास के setup() मेथड पर जा सकते हैं। इसके बजाय आप अपने जुनीट रनर (@RunWith) में openMocks() भी डाल सकते हैं या बिल्ट-इन MockitoJUnitRunner का उपयोग कर सकते हैं।

इस प्रकार, या तो:

  1. परीक्षण चलने से पहले कहीं openMocks(this) पर कॉल करें या
  2. कक्षा में @RunWith(MockitoJUnitRunner.class) का प्रयोग करें
1
dominicoder 8 नवम्बर 2021, 00:20