Spring Web Services-এ Mockito এবং MockWebServiceServer ব্যবহার করে SOAP এবং REST API টেস্টিং করার মাধ্যমে আমরা সহজেই ওয়েব সার্ভিসের কার্যকারিতা যাচাই করতে পারি। এটি ডেভেলপমেন্ট পর্যায়ে দ্রুত ত্রুটি শনাক্ত ও সমাধানে সহায়তা করে।
SOAP এবং REST API টেস্টিং-এর ধারণা
- SOAP API টেস্টিং: SOAP (Simple Object Access Protocol) একটি XML-ভিত্তিক প্রোটোকল যা ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। SOAP টেস্টিং সাধারণত ইনপুট XML, আউটপুট XML, এবং নির্ধারিত স্কিমা ভেরিফিকেশন এর মাধ্যমে করা হয়।
- REST API টেস্টিং: REST (Representational State Transfer) একটি লাইটওয়েট আর্কিটেকচার। REST API টেস্টিং সাধারণত HTTP মেথড (GET, POST, PUT, DELETE), পে-লোড, এবং রেসপন্স কোড যাচাই করার মাধ্যমে করা হয়।
Mockito এবং MockWebServiceServer-এর ভূমিকা
- Mockito: এটি একটি জনপ্রিয় মকিং ফ্রেমওয়ার্ক যা স্প্রিং-সহ অন্যান্য ফ্রেমওয়ার্কের ইউনিট টেস্টিং-এর জন্য ব্যবহৃত হয়। Mockito এর মাধ্যমে আমরা ডিপেন্ডেন্সি মক করতে পারি, যাতে টেস্টিং আরো সহজ হয়।
- MockWebServiceServer:
- এটি স্প্রিং-ওয়েব-সার্ভিসেস ফ্রেমওয়ার্কের অংশ এবং বিশেষভাবে SOAP ওয়েব সার্ভিস টেস্ট করার জন্য ব্যবহৃত হয়।
- এটি একটি মক সার্ভার তৈরি করে যেখানে আমরা রিকোয়েস্ট পাঠিয়ে রেসপন্স যাচাই করতে পারি।
SOAP API টেস্টিং উদাহরণ:
নির্ধারিত XML রিকোয়েস্ট এবং রেসপন্স যাচাই
নিচে একটি SOAP API টেস্টিং উদাহরণ দেওয়া হলো যেখানে MockWebServiceServer ব্যবহার করা হয়েছে:
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.test.client.MockWebServiceServer;
import org.springframework.xml.transform.StringSource;
import javax.xml.transform.Source;
import static org.springframework.ws.test.client.RequestMatchers.payload;
import static org.springframework.ws.test.client.ResponseCreators.withPayload;
@SpringBootTest
public class SoapWebServiceTest {
@Autowired
private WebServiceTemplate webServiceTemplate;
private MockWebServiceServer mockServer;
@BeforeEach
public void setup() {
mockServer = MockWebServiceServer.createServer(webServiceTemplate);
}
@Test
public void testSoapRequestAndResponse() {
String requestPayload =
"<GetCountryRequest xmlns='http://example.com/soap'>" +
"<name>India</name>" +
"</GetCountryRequest>";
String responsePayload =
"<GetCountryResponse xmlns='http://example.com/soap'>" +
"<country>" +
"<name>India</name>" +
"<population>1300000000</population>" +
"</country>" +
"</GetCountryResponse>";
mockServer.expect(payload(new StringSource(requestPayload)))
.andRespond(withPayload(new StringSource(responsePayload)));
// Call the SOAP service
Source response = webServiceTemplate.sendSourceAndReceive(
"http://localhost:8080/ws",
new StringSource(requestPayload),
message -> {}
);
// Verify response (custom validation can be added)
mockServer.verify();
}
}
REST API টেস্টিং উদাহরণ:
Mockito ব্যবহার করে REST API এর মক টেস্টিং
নিচে একটি REST API টেস্টিং উদাহরণ যেখানে Mockito ব্যবহার করা হয়েছে:
import static org.mockito.Mockito.*;
import static org.assertj.core.api.Assertions.assertThat;
import com.example.demo.controller.UserController;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class RestApiTest {
@Autowired
private UserController userController;
@Mock
private UserService userService;
@Test
public void testGetUser() {
// Arrange
User mockUser = new User(1L, "John Doe", "john@example.com");
when(userService.getUserById(1L)).thenReturn(mockUser);
// Act
User user = userController.getUser(1L);
// Assert
assertThat(user.getName()).isEqualTo("John Doe");
assertThat(user.getEmail()).isEqualTo("john@example.com");
// Verify interaction
verify(userService, times(1)).getUserById(1L);
}
}
Test Execution Process
- SOAP API টেস্টিং প্রক্রিয়া:
MockWebServiceServerসেটআপ করুন।- নির্ধারিত রিকোয়েস্ট এবং রেসপন্স ব্যবহার করুন।
- টেস্ট চালিয়ে মক সার্ভারের সাথে রেসপন্স যাচাই করুন।
- REST API টেস্টিং প্রক্রিয়া:
- Mockito দিয়ে সার্ভিস মক করুন।
- কন্ট্রোলার কল করে রেসপন্স যাচাই করুন।
- মক সার্ভিসের কল ভেরিফাই করুন।
উপসংহার
- SOAP API টেস্টিং:
MockWebServiceServerদিয়ে রিকোয়েস্ট এবং রেসপন্স যাচাই করে নিশ্চিত করা যায় যে সার্ভিস সঠিকভাবে কাজ করছে। - REST API টেস্টিং: Mockito দিয়ে সার্ভিস বা ডিপেন্ডেন্সি মক করে রেসপন্স ভ্যালিডেট করা হয়।
এই পদ্ধতিগুলি উন্নয়ন পর্যায়ে API-র কার্যকারিতা যাচাই করার জন্য কার্যকরী এবং সময় সাশ্রয়ী।
Content added By