Mockito এবং MockWebServiceServer এর মাধ্যমে SOAP এবং REST API Testing

Spring Web Services এর মধ্যে Testing - স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) - Java Technologies

260

Spring Web Services-এ Mockito এবং MockWebServiceServer ব্যবহার করে SOAP এবং REST API টেস্টিং করার মাধ্যমে আমরা সহজেই ওয়েব সার্ভিসের কার্যকারিতা যাচাই করতে পারি। এটি ডেভেলপমেন্ট পর্যায়ে দ্রুত ত্রুটি শনাক্ত ও সমাধানে সহায়তা করে।


SOAP এবং REST API টেস্টিং-এর ধারণা

  1. SOAP API টেস্টিং: SOAP (Simple Object Access Protocol) একটি XML-ভিত্তিক প্রোটোকল যা ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়। SOAP টেস্টিং সাধারণত ইনপুট XML, আউটপুট XML, এবং নির্ধারিত স্কিমা ভেরিফিকেশন এর মাধ্যমে করা হয়।
  2. REST API টেস্টিং: REST (Representational State Transfer) একটি লাইটওয়েট আর্কিটেকচার। REST API টেস্টিং সাধারণত HTTP মেথড (GET, POST, PUT, DELETE), পে-লোড, এবং রেসপন্স কোড যাচাই করার মাধ্যমে করা হয়।

Mockito এবং MockWebServiceServer-এর ভূমিকা

  1. Mockito: এটি একটি জনপ্রিয় মকিং ফ্রেমওয়ার্ক যা স্প্রিং-সহ অন্যান্য ফ্রেমওয়ার্কের ইউনিট টেস্টিং-এর জন্য ব্যবহৃত হয়। Mockito এর মাধ্যমে আমরা ডিপেন্ডেন্সি মক করতে পারি, যাতে টেস্টিং আরো সহজ হয়।
  2. 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

  1. SOAP API টেস্টিং প্রক্রিয়া:
    • MockWebServiceServer সেটআপ করুন।
    • নির্ধারিত রিকোয়েস্ট এবং রেসপন্স ব্যবহার করুন।
    • টেস্ট চালিয়ে মক সার্ভারের সাথে রেসপন্স যাচাই করুন।
  2. REST API টেস্টিং প্রক্রিয়া:
    • Mockito দিয়ে সার্ভিস মক করুন।
    • কন্ট্রোলার কল করে রেসপন্স যাচাই করুন।
    • মক সার্ভিসের কল ভেরিফাই করুন।

উপসংহার

  • SOAP API টেস্টিং: MockWebServiceServer দিয়ে রিকোয়েস্ট এবং রেসপন্স যাচাই করে নিশ্চিত করা যায় যে সার্ভিস সঠিকভাবে কাজ করছে।
  • REST API টেস্টিং: Mockito দিয়ে সার্ভিস বা ডিপেন্ডেন্সি মক করে রেসপন্স ভ্যালিডেট করা হয়।

এই পদ্ধতিগুলি উন্নয়ন পর্যায়ে API-র কার্যকারিতা যাচাই করার জন্য কার্যকরী এবং সময় সাশ্রয়ী।

Content added By
Promotion

Are you sure to start over?

Loading...