Hướng Dẫn Cài Đặt SoapUI Mock Service và Giải Pháp Thay Thế Hiện Đại

INEZA Felin-Michel

INEZA Felin-Michel

20 tháng 4 2026

Hướng Dẫn Cài Đặt SoapUI Mock Service và Giải Pháp Thay Thế Hiện Đại

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

TÓM TẮT

Các dịch vụ mock của SoapUI mô phỏng các endpoint SOAP hoặc REST cục bộ, nhưng chúng yêu cầu một tiến trình Java đang chạy, cấu hình điều phối thủ công và không thể chia sẻ giữa các thành viên trong nhóm nếu không có máy dùng chung. Smart Mock của Apidog tạo các phản hồi mock từ lược đồ API của bạn, chạy trên đám mây và tự động chia sẻ với nhóm của bạn.

💡
Apidog là một nền tảng phát triển API tất cả trong một miễn phí với Smart Mock tích hợp, tạo các endpoint mock tức thì từ các định nghĩa API của bạn mà không cần chạy một tiến trình Java cục bộ. Hãy dùng thử Apidog miễn phí, không yêu cầu thẻ tín dụng.
button

Giới thiệu

Các dịch vụ mock giải quyết một vấn đề phổ biến trong phát triển API: bạn muốn kiểm tra cách mã client của mình xử lý một dịch vụ trước khi dịch vụ đó sẵn sàng, hoặc bạn muốn kiểm tra các trường hợp đặc biệt (lỗi, phản hồi chậm) mà không gây ra chúng trong một hệ thống thực.

Tính năng dịch vụ mock của SoapUI đã có sẵn từ những phiên bản đầu tiên và nó hoạt động hiệu quả. Nó chạy một máy chủ HTTP cục bộ phản hồi các yêu cầu theo các quy tắc bạn cấu hình. Vấn đề là tiến trình cục bộ này gây ra trở ngại: nó ngừng hoạt động khi bạn đóng SoapUI, các thành viên khác trong nhóm không thể truy cập nó nếu không có các thủ thuật mạng, và giao diện cấu hình thì cồng kềnh.

Hướng dẫn này bao gồm cách hoạt động của dịch vụ mock SoapUI, cách thiết lập chúng, các vấn đề phổ biến mà các nhóm gặp phải và cách tiếp cận của Apidog so sánh như thế nào.

Cách hoạt động của dịch vụ mock SoapUI

SoapUI tạo dịch vụ mock từ các giao diện SOAP hoặc REST hiện có trong dự án của bạn. Dịch vụ mock:

  1. Lắng nghe trên một cổng cục bộ mà bạn cấu hình (ví dụ: http://localhost:8088/MockService)
  2. Chặn các yêu cầu đến
  3. Khớp yêu cầu với một "phản hồi mock" bằng cách sử dụng logic điều phối (dispatch logic)
  4. Trả về phản hồi đã cấu hình

Đối với các dịch vụ SOAP, SoapUI có thể tự động tạo phản hồi mock từ WSDL của bạn, tạo các phản hồi giả lập cho mỗi hoạt động. Điều này hữu ích để mô phỏng một dịch vụ trước khi nó tồn tại hoặc trước khi bạn có quyền truy cập vào endpoint thực.

Thiết lập dịch vụ mock SoapUI (từng bước)

Đối với giao diện SOAP

  1. Trong dự án SoapUI của bạn, nhấp chuột phải vào một giao diện SOAP trong cây dự án.
  2. Chọn “Generate MockService.” (Tạo MockService)
  3. Trong hộp thoại, cấu hình:
  1. Nhấp OK. SoapUI tạo một nút MockService trong cây dự án của bạn.
  2. Mở rộng nút MockService. Bạn sẽ thấy một “MockOperation” cho mỗi hoạt động SOAP trong giao diện.
  3. Nhấp đúp vào một MockOperation để mở trình chỉnh sửa phản hồi mock.
  4. Chỉnh sửa XML phản hồi SOAP để trả về các giá trị bạn muốn mô phỏng.
  5. Nhấp vào nút play màu xanh lá cây trong trình chỉnh sửa MockService để khởi động máy chủ cục bộ.

Mock của bạn hiện đang chạy tại http://localhost:8088/orders. Trỏ mã client của bạn đến URL này.

Đối với giao diện REST

  1. Nhấp chuột phải vào một giao diện hoặc tài nguyên REST trong cây dự án.
  2. Chọn “Add to MockService” (Thêm vào MockService) hoặc “Generate MockService” (Tạo MockService).
  3. Cấu hình cổng và đường dẫn như trên.
  4. Đối với mỗi tài nguyên/phương thức, cấu hình nội dung phản hồi mock và mã trạng thái.
  5. Khởi động dịch vụ mock.

Cấu hình điều phối (dispatch)

Theo mặc định, dịch vụ mock của SoapUI trả về phản hồi mock đầu tiên mà nó tìm thấy. Nếu bạn muốn các phản hồi khác nhau cho các đầu vào khác nhau, hãy cấu hình một "dispatch script" (Groovy) hoặc sử dụng loại điều phối “SEQUENCE” (TUẦN TỰ).

Điều phối theo trình tự (Sequence dispatch): Trả về các phản hồi theo một thứ tự cố định trong các lần gọi liên tiếp. Lần gọi 1 nhận phản hồi A, lần gọi 2 nhận phản hồi B.

Điều phối SCRIPT: Một script Groovy kiểm tra yêu cầu và trả về tên phản hồi dựa trên logic.

Ví dụ script điều phối:

def request = mockRequest.getRequestContent()
if (request.contains("orderId>12345")) {
  return "OrderFoundResponse"
} else {
  return "OrderNotFoundResponse"
}

Bạn tạo nhiều phản hồi mock được đặt tên (ví dụ: “OrderFoundResponse,” “OrderNotFoundResponse”) và script điều phối sẽ chọn phản hồi nào để trả về dựa trên nội dung yêu cầu đến.

Các vấn đề phổ biến của dịch vụ mock SoapUI

Vấn đề 1: Mock ngừng hoạt động khi SoapUI đóng

Dịch vụ mock của SoapUI chạy như một phần của tiến trình JVM của SoapUI. Khi bạn đóng SoapUI, mock sẽ ngừng hoạt động. Các thành viên trong nhóm đang sử dụng mock sẽ mất nó.

Giải pháp thay thế:

Không có giải pháp nào trong số này là tối ưu. Tùy chọn dòng lệnh có ích, nhưng nó vẫn yêu cầu một máy có SoapUI và Java được cài đặt.

Vấn đề 2: Chia sẻ mock giữa các thành viên trong nhóm

Một mock trên localhost:8088 chỉ có thể truy cập được bởi người chạy nó. Để các thành viên trong nhóm truy cập cùng một mock, bạn cần quyền truy cập mạng vào máy đó (quy tắc tường lửa, thiết lập VPN) hoặc chạy mock trên một máy chủ dùng chung.

Vấn đề 3: Script điều phối bị lỗi với XML phức tạp

Script điều phối của SoapUI sử dụng Groovy để khớp chuỗi trên nội dung XML thô. Các envelope SOAP có namespace, và cùng một giá trị logic có thể xuất hiện với các tiền tố namespace khác nhau tùy thuộc vào client. Các script tìm kiếm các chuỗi văn bản như <orderId>12345</orderId> sẽ bị lỗi khi tiền tố khác nhau.

Việc khắc phục đòi hỏi phân tích cú pháp XML đúng cách trong script điều phối bằng cách sử dụng lớp GroovyUtils của SoapUI, điều này làm tăng độ phức tạp.

Vấn đề 4: Trạng thái không được duy trì giữa các lần gọi

Các dịch vụ mock của SoapUI mặc định là không trạng thái. Nếu bạn muốn mock một luồng công việc tạo-sau-đó-đọc (POST để tạo, GET để truy xuất), bạn cần một script điều phối Groovy lưu trữ trạng thái trong một biến dùng chung. Điều này hoạt động nhưng rất dễ bị lỗi.

Vấn đề 5: SSL cho dịch vụ mock

Cấu hình HTTPS cho dịch vụ mock SoapUI yêu cầu thiết lập một keystore, cấu hình cài đặt SSL của SoapUI và trỏ client đến chứng chỉ phù hợp. Điều này phức tạp hơn đáng kể so với các mock chỉ HTTP.

Apidog Smart Mock: So sánh

Cách tiếp cận mock của Apidog bắt đầu từ thiết kế API, không phải từ một tiến trình đang chạy.

Khi bạn định nghĩa một endpoint API trong Apidog (phương thức, đường dẫn, lược đồ yêu cầu, lược đồ phản hồi), Apidog tự động tạo một endpoint mock trên đám mây. Không cần cấu hình.

URL mock sẽ trông giống như: https://{your-project}.mock.apidog.io/orders/{id}

URL này:

Cách Apidog tạo phản hồi mock

Apidog đọc lược đồ phản hồi của bạn (JSON Schema hoặc định nghĩa phản hồi OpenAPI) và tạo dữ liệu giả lập thực tế. Một lược đồ nói rằng orderId là một string theo định dạng UUID sẽ trả về một UUID ngẫu nhiên. Một lược đồ nói rằng amount là một number giữa 0 và 10000 sẽ trả về một số trong phạm vi đó.

Bạn cũng có thể cấu hình các quy tắc mock tùy chỉnh cho các trường cụ thể. Đặt orderId luôn trả về "test-123" khi bạn cần một giá trị dự đoán được.

Endpoint SOAP trong Apidog Mock

Smart Mock của Apidog được thiết kế cho các endpoint REST với phản hồi JSON. Đối với các endpoint SOAP, việc thiết lập mock là thủ công: bạn tạo một yêu cầu trong Apidog, cấu hình một phản hồi tùy chỉnh với một SOAP envelope và sử dụng máy chủ mock của Apidog để trả về nó.

Điều này ít tự động hóa hơn so với việc tạo mock dựa trên WSDL của SoapUI, nhưng nó hoạt động tốt cho các nhóm cần một mock SOAP đơn giản mà không cần chạy một tiến trình Java cục bộ.

Mocking có trạng thái (Stateful mocking)

Apidog hỗ trợ các script phản hồi tùy chỉnh cho hành vi mock có trạng thái. Bạn có thể kiểm tra nội dung yêu cầu trong một script mock JavaScript và trả về các phản hồi khác nhau dựa trên nội dung yêu cầu, tương tự như script điều phối của SoapUI nhưng bằng JavaScript.

So sánh song song

Tính năng SoapUI Mock Apidog Smart Mock
Yêu cầu Java Không
Luôn bật Chỉ với trình chạy dòng lệnh Có (đám mây)
Có thể truy cập bởi nhóm Mạng thủ công Có, qua URL chia sẻ
Tự động tạo WSDL Không
Dựa trên lược đồ REST Không
Phản hồi động Điều phối Groovy Script mock JavaScript
Hỗ trợ HTTPS Thiết lập keystore thủ công Tích hợp sẵn
Mocking có trạng thái Qua biến Groovy Qua script JavaScript
Miễn phí

Khi nào nên sử dụng từng công cụ

Sử dụng dịch vụ mock SoapUI khi:

Sử dụng Apidog Smart Mock khi:

Câu hỏi thường gặp

Tôi có thể chạy dịch vụ mock SoapUI mà không cần GUI không?Có. SoapUI bao gồm mockservicerunner.sh (Linux/macOS) và mockservicerunner.bat (Windows). Chạy chúng với đường dẫn tệp dự án và tên dịch vụ. Bạn vẫn cần cài đặt Java, nhưng không cần mở GUI.

Apidog có hỗ trợ dịch vụ mock SOAP không?Một phần. Bạn có thể cấu hình phản hồi tùy chỉnh với SOAP XML trong máy chủ mock của Apidog. Bạn sẽ không nhận được tính năng tự động tạo phản hồi stub dựa trên WSDL. Đối với các nhóm có giao diện SOAP đã được hiểu rõ, việc thiết lập thủ công là có thể quản lý được.

Dịch vụ mock SoapUI có thể mô phỏng phản hồi chậm không?Có. Trong cấu hình phản hồi mock, đặt giá trị “Delay” (Độ trễ) theo mili giây. Apidog cũng hỗ trợ cấu hình độ trễ phản hồi để mô phỏng điều kiện mạng chậm.

Apidog có thể xử lý bao nhiêu yêu cầu mock?Máy chủ mock đám mây của Apidog xử lý các tải phát triển và kiểm thử điển hình. Đối với kiểm thử hiệu năng với khối lượng lớn, một công cụ máy chủ mock chuyên dụng có thể phù hợp hơn.

Điều gì xảy ra nếu hai thành viên trong nhóm cần các phản hồi mock khác nhau cho cùng một endpoint?Trong SoapUI, mỗi người chạy mock cục bộ riêng của họ và có thể cấu hình độc lập. Trong Apidog, bạn có thể tạo nhiều môi trường hoặc sử dụng tham số truy vấn để chọn các kịch bản phản hồi khác nhau. Tính năng “Mock expects” (Mock mong đợi) của Apidog cho phép bạn khớp các điều kiện yêu cầu cụ thể với các phản hồi cụ thể.

Mock của Apidog có yêu cầu API phải được định nghĩa đầy đủ trước không?Lược đồ phản hồi giúp Apidog tạo dữ liệu thực tế, nhưng bạn có thể tạo các phản hồi mock thủ công mà không cần lược đồ đầy đủ. Chỉ cần định nghĩa endpoint, đặt nội dung phản hồi tùy chỉnh và mock sẽ hoạt động.

Dịch vụ mock của SoapUI hoạt động tốt nhưng gắn liền với một tiến trình Java cục bộ. Đối với các nhóm hiện đại cần các mock ổn định, có thể chia sẻ, cách tiếp cận dựa trên đám mây của Apidog loại bỏ gánh nặng phối hợp.

button

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API

Hướng Dẫn Cài Đặt SoapUI Mock Service và Giải Pháp Thay Thế Hiện Đại