JSoup সাধারণত HTML ডকুমেন্ট ম্যানিপুলেশন এবং স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হয়, তবে ওয়েব স্ক্র্যাপিং এবং HTTP রিকোয়েস্টের মধ্যে সম্পর্ক তৈরির জন্য এটি কিছু HTTP অনুরোধ (requests) করতে পারে। তবে, JSoup সরাসরি HTTP রিকোয়েস্ট মক (mock) বা রেসপন্স টেস্টিংয়ের জন্য তৈরি হয়নি। এ ধরনের কার্যক্রমের জন্য অন্য লাইব্রেরি, যেমন Mockito, WireMock, অথবা HttpClient ব্যবহৃত হয়।
তবে, আপনি যদি JSoup দিয়ে HTTP রিকোয়েস্ট মক এবং রেসপন্স টেস্টিং করতে চান, তখন কিছু টুল বা লাইব্রেরি একত্রে ব্যবহার করতে হতে পারে। এই লেখায়, আমরা Mockito এবং WireMock ব্যবহার করে HTTP রিকোয়েস্ট মকিং এবং রেসপন্স টেস্টিংয়ের কিছু উদাহরণ দেখাবো।
Mockito এবং JSoup এর মাধ্যমে HTTP রিকোয়েস্ট মকিং
Mockito একটি জনপ্রিয় মকিং লাইব্রেরি যা Java-তে ইউনি টেস্টিং (unit testing) এর জন্য ব্যবহৃত হয়। JSoup এর HTTP রিকোয়েস্ট মক করার জন্য Mockito ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, যখন আপনি একটি ওয়েব পেজ থেকে ডেটা স্ক্র্যাপ করছেন এবং HTTP রিকোয়েস্টকে মক করতে চান, তখন Mockito এর সাহায্যে HTTP রিকোয়েস্টের আউটপুট টেস্ট করা সম্ভব।
উদাহরণ:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.mockito.Mockito;
import org.junit.Test;
import static org.mockito.Mockito.*;
public class JsoupMockHttpRequestTest {
@Test
public void testMockHttpRequest() throws Exception {
// Mocking Jsoup.connect() method to return a predefined Document
Document mockDoc = mock(Document.class);
String mockHtml = "<html><body><h1>Mocked HTML Response</h1></body></html>";
when(mockDoc.html()).thenReturn(mockHtml);
// Mocking Jsoup.connect() to return the mocked document
Jsoup jsoup = mock(Jsoup.class);
when(jsoup.connect("https://example.com")).thenReturn(mockDoc);
// Verifying the HTML content
Document doc = jsoup.connect("https://example.com").get();
System.out.println(doc.html()); // Output: <html><body><h1>Mocked HTML Response</h1></body></html>
}
}
এই উদাহরণে, আমরা Jsoup.connect() মেথডকে মক করেছি এবং একটি মক HTML রেসপন্স তৈরি করেছি। পরে when() মেথড দিয়ে আমরা মক রেসপন্স সেট করেছি এবং get() মেথডের মাধ্যমে সেই রেসপন্সটি ফেরত পেয়েছি।
WireMock ব্যবহার করে HTTP রিকোয়েস্ট এবং রেসপন্স মকিং
WireMock একটি জনপ্রিয় HTTP রিকোয়েস্ট এবং রেসপন্স মকিং টুল। এটি HTTP সার্ভার হিসেবে কাজ করে এবং বিভিন্ন HTTP রিকোয়েস্টের জন্য রেসপন্স মক (mock) করতে সাহায্য করে। WireMock ব্যবহার করে আপনি সহজে HTTP রিকোয়েস্ট মক করে তার রেসপন্স টেস্ট করতে পারেন।
WireMock সেটআপ
প্রথমে Maven বা Gradle এর মাধ্যমে WireMock ডিপেন্ডেন্সি যুক্ত করতে হবে।
Maven ডিপেন্ডেন্সি:
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<version>2.33.2</version> <!-- সর্বশেষ সংস্করণ -->
<scope>test</scope>
</dependency>
উদাহরণ:
import com.github.tomakehurst.wiremock.client.WireMock;
import org.junit.Before;
import org.junit.After;
import org.junit.Test;
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options;
public class WireMockJsoupExample {
@Before
public void setup() {
// WireMock সার্ভার শুরু করা
WireMock.configureFor("localhost", 8080);
WireMock.start();
// Mock HTTP রিকোয়েস্ট এবং রেসপন্স তৈরি করা
WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/test"))
.willReturn(WireMock.aResponse()
.withHeader("Content-Type", "text/html")
.withBody("<html><body><h1>Mocked Page</h1></body></html>")));
}
@Test
public void testMockHttpRequest() throws Exception {
// JSoup দিয়ে মক URL থেকে HTML ডেটা এক্সট্র্যাক্ট করা
org.jsoup.nodes.Document doc = Jsoup.connect("http://localhost:8080/test").get();
System.out.println(doc.html()); // Output: <html><body><h1>Mocked Page</h1></body></html>
}
@After
public void tearDown() {
// WireMock সার্ভার বন্ধ করা
WireMock.stop();
}
}
এখানে, আমরা WireMock ব্যবহার করে একটি মক HTTP রিকোয়েস্ট এবং রেসপন্স তৈরি করেছি এবং পরে JSoup দিয়ে সেই রেসপন্সের HTML ডেটা এক্সট্র্যাক্ট করেছি। WireMock.stubFor() মেথড ব্যবহার করে HTTP GET রিকোয়েস্টের জন্য মক রেসপন্স তৈরি করা হয়েছে।
সারাংশ
JSoup সাধারণত HTML স্ক্র্যাপিং এবং ডকুমেন্ট ম্যানিপুলেশনের জন্য ব্যবহৃত হলেও, HTTP রিকোয়েস্ট মক এবং রেসপন্স টেস্টিংয়ের জন্য Mockito এবং WireMock লাইব্রেরি ব্যবহার করা হয়। Mockito Java-তে ইউনিট টেস্টিংয়ের জন্য HTTP রিকোয়েস্ট মক করতে সাহায্য করে, আর WireMock একটি বিশেষ HTTP রিকোয়েস্ট এবং রেসপন্স মকিং টুল যা ওয়েব সার্ভিসের টেস্টিংয়ের জন্য কার্যকর। এগুলি JSoup এর সাথে একত্রে ব্যবহার করে আপনি ওয়েব রিকোয়েস্ট এবং রেসপন্স টেস্টিংয়ের কার্যক্রম আরও সহজে করতে পারেন।
Read more