परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण · पाठ

RESTful एपीआई का परीक्षण

अपने Spring Boot REST नियंत्रकों के लिए व्यापक एकीकरण परीक्षण लिखने हेतु `MockMvc` या `WebTestClient` का उपयोग करें।

पाठ 2, कुल 4 में से11 चरण

RESTful एपीआई का परीक्षण, CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

REST API का परीक्षण क्यों करें?

REST API अनेक आधुनिक अनुप्रयोगों की आधारशिला हैं। यह सुनिश्चित करने के लिए उनका परीक्षण करना अत्यंत महत्वपूर्ण है कि वे अपेक्षित रूप से काम करें, विभिन्न इनपुट संभालें और सही प्रतिक्रियाएँ लौटाएँ।

यह पाठ शक्तिशाली उपकरणों MockMvc और WebTestClient का उपयोग करके अपने Spring Boot REST नियंत्रकों के लिए एकीकरण परीक्षण लिखने पर केंद्रित है।

Spring Boot परीक्षण सेटअप

Spring Boot नियंत्रकों का परीक्षण करने के लिए हमें एक विशेष सेटअप चाहिए। @SpringBootTest एनोटेशन पूरा अनुप्रयोग संदर्भ लोड करता है और @AutoConfigureMockMvc हमारे लिए MockMvc को कॉन्फ़िगर करता है।

यहाँ नियंत्रक परीक्षण क्लास की एक बुनियादी संरचना दी गई है:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

@SpringBootTest
@AutoConfigureMockMvc
public class MyApiControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void contextLoads() {
        // Your tests will go here
    }
}

MockMvc का परिचय

MockMvc आपको पूरा HTTP सर्वर शुरू किए बिना अपने Spring MVC नियंत्रकों का परीक्षण करने देता है। यह HTTP अनुरोधों और प्रतिक्रियाओं का अनुकरण करता है, जिससे परीक्षण तेज़ और अलग-थलग रहते हैं।

यह नियंत्रक स्तर के परीक्षण के लिए आदर्श है और यह सुनिश्चित करता है कि मार्ग, अनुरोध मैपिंग और प्रतिक्रिया प्रारूप सही हों।

MockMvc: GET अनुरोधों का परीक्षण

आइए एक सरल GET एंडपॉइंट का परीक्षण करते हैं, उदाहरण के लिए /api/hello, जो "Hello, CoddyKit!" लौटाता है। हम HTTP स्थिति कोड और प्रतिक्रिया की सामग्री की जाँच करेंगे।

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

// Assume a @RestController with @GetMapping("/api/hello") returning "Hello, CoddyKit!"
@SpringBootTest
@AutoConfigureMockMvc
public class HelloControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void testHelloEndpoint() throws Exception {
        mockMvc.perform(get("/api/hello"))
               .andExpect(status().isOk())
               .andExpect(content().string("Hello, CoddyKit!"));
    }
}

MockMvc: पथ चर के साथ GET

API अक्सर संसाधनों की पहचान करने के लिए पथ चरों का उपयोग करती हैं, जैसे /api/users/{id}। MockMvc इन्हें स्वाभाविक रूप से संभालता है।

यहाँ ID लेने वाले एंडपॉइंट का परीक्षण करने का तरीका बताया गया है:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

// Assume @GetMapping("/api/users/{id}") returns "User: " + id
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void testGetUserById() throws Exception {
        mockMvc.perform(get("/api/users/{id}", 123))
               .andExpect(status().isOk())
               .andExpect(content().string("User: 123"));
    }
}

MockMvc: POST अनुरोधों का परीक्षण

POST अनुरोधों के लिए आप सामान्यतः अनुरोध का मुख्य भाग भेजते हैं, प्रायः JSON प्रारूप में। हम MockMvc का उपयोग करके सामग्री का प्रकार और मुख्य भाग निर्दिष्ट कर सकते हैं।

आइए किसी आइटम को बनाने वाले एंडपॉइंट का परीक्षण करते हैं:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

// Assume @PostMapping("/api/items") creates an item and returns it
@SpringBootTest
@AutoConfigureMockMvc
public class ItemControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void testCreateItem() throws Exception {
        String newItemJson = "{\"name\":\"Laptop\", \"price\":1200}";
        mockMvc.perform(post("/api/items")
                       .contentType(MediaType.APPLICATION_JSON)
                       .content(newItemJson))
               .andExpect(status().isCreated())
               .andExpect(jsonPath("$.name").value("Laptop"));
    }
}

WebTestClient का परिचय

WebTestClient वेब अनुप्रयोगों के परीक्षण के लिए एक गैर-अवरोधक, प्रतिक्रियाशील क्लाइंट है। यह Spring WebFlux का भाग है, लेकिन इसका उपयोग Spring MVC नियंत्रकों के परीक्षण के लिए भी किया जा सकता है।

  • यदि इसे चल रहे सर्वर से अनुरोध भेजने के लिए कॉन्फ़िगर किया गया हो, तो यह वास्तविक HTTP कॉल कर सकता है।
  • इसे सर्वर-पक्ष परीक्षण के लिए MockMvc पर आधारित भी किया जा सकता है। यह स्वयं MockMvc के समान है, लेकिन प्रतिक्रियाशील API के साथ।

WebTestClient का प्रयोग

WebTestClient का उपयोग MockMvc के समान है, लेकिन इसका फ्लुएंट API अधिक आधुनिक अनुभव देता है, विशेषकर प्रतिक्रियाशील अनुप्रयोगों में। आइए अपने /api/hello एंडपॉइंट का फिर से परीक्षण करते हैं।

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.web.reactive.server.WebTestClient;

// For WebTestClient with Spring MVC, we can use @SpringBootTest
// and inject WebTestClient.Builder to build it with MockMvc.webAppContextSetup
// For simplicity, this example assumes a WebFlux app or WebTestClient set up for MockMvc
// @SpringBootTest
// class HelloWebClientTest {
// @Autowired WebApplicationContext wac;
// WebTestClient client;
// @BeforeEach void setup() { client = WebTestClient.bindToApplicationContext(wac).build(); }
// ...

// For a simpler runnable example focusing on WebTestClient usage:
@WebFluxTest // This annotation sets up a minimal reactive context for WebTestClient
public class HelloWebClientTest {

    @Autowired
    private WebTestClient webTestClient;

    @Test
    void testHelloEndpoint() {
        webTestClient.get().uri("/api/hello")
                     .exchange()
                     .expectStatus().isOk()
                     .expectBody(String.class).isEqualTo("Hello, CoddyKit!");
    }
}

MockMvc बनाम WebTestClient

आपको MockMvc और WebTestClient में से किसका उपयोग कब करना चाहिए?

  • MockMvc: पारंपरिक Spring MVC अनुप्रयोगों के लिए सबसे अच्छा है। यह सर्वर-पक्ष पर काम करता है, अनुरोधों का अनुकरण करता है और चल रहे सर्वर की आवश्यकता नहीं होती, इसलिए यह तेज़ है।
  • WebTestClient: प्रतिक्रियाशील Spring WebFlux अनुप्रयोगों के लिए आदर्श है। यह Spring MVC अनुप्रयोगों के परीक्षण के लिए प्रतिक्रियाशील क्लाइंट API भी प्रदान करता है, जिससे परीक्षण लिखने का अधिक आधुनिक और फ्लुएंट तरीका मिलता है। वास्तविक एंड-टू-एंड एकीकरण परीक्षणों के लिए यह सीधे सक्रिय सर्वर से भी जुड़ सकता है।

नियंत्रक स्तर पर केंद्रित अधिकांश Spring Boot REST API एकीकरण परीक्षणों के लिए MockMvc अपनी गति और सीधे एकीकरण के कारण एक भरोसेमंद विकल्प है।

त्वरित जाँच: API परीक्षण उपकरण

आप पारंपरिक Spring MVC का उपयोग करके Spring Boot अनुप्रयोग बना रहे हैं। आप पूरा HTTP सर्वर शुरू किए बिना अपने REST नियंत्रकों के लिए तेज़ और अलग-थलग एकीकरण परीक्षण लिखना चाहते हैं।

पुनरावलोकन और अगले चरण

इस पाठ में आपने अपने Spring Boot REST नियंत्रकों के लिए व्यापक एकीकरण परीक्षण लिखना सीखा। हमने इन विषयों को शामिल किया:

  • @SpringBootTest और @AutoConfigureMockMvc से अपना परीक्षण परिवेश तैयार करना।
  • GET और POST अनुरोधों का अनुकरण करने तथा स्थिति और सामग्री की जाँच करने के लिए MockMvc का उपयोग।
  • प्रतिक्रियाशील परीक्षण के लिए WebTestClient और उसके वैकल्पिक उपयोगों का परिचय।
  • MockMvc और WebTestClient के बीच अंतर समझना और इनके बीच चयन करना।

मज़बूत और भरोसेमंद REST API बनाने के लिए ये उपकरण आवश्यक हैं!

शुरुआत निःशुल्क

एआई शिक्षक के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “RESTful एपीआई का परीक्षण” पाठ निःशुल्क है?

हाँ — परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “RESTful एपीआई का परीक्षण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“RESTful एपीआई का परीक्षण” में मैं क्या सीखूँगा?

अपने Spring Boot REST नियंत्रकों के लिए व्यापक एकीकरण परीक्षण लिखने हेतु `MockMvc` या `WebTestClient` का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“RESTful एपीआई का परीक्षण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Spring परीक्षण संदर्भ फ़्रेमवर्क
  2. RESTful एपीआई का परीक्षण
  3. परीक्षणों के लिए एम्बेडेड डेटाबेस
  4. @WebMvcTest और MockMvc से वेब परतों का परीक्षण
← परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पर वापस जाएँ