Giới thiệu về MUnit trong Mule ESB

Đối với Java code, nhằm đảm bảo rằng đoạn code mà chúng ta viết ra, hoạt động như chúng ta mong đợi và trong tương lai nếu chúng ta có thay đổi code thì có thể aware được những sai sót, chúng ta thường sử dụng JUnit để viết Unit Test . Còn đối với Mule ESB với các Mule Flows thì để đạt được mục đích này, chúng ta cần sử dụng MUnit để viết Unit Test. Cụ thể như thế nào? Chúng ta hãy cùng nhau tìm hiểu về MUnit trong Mule ESB trong bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo một Mule Maven project với một Mule Flow đơn giản như sau:

Giới thiệu về MUnit trong Mule ESB

Mule Flow:

Giới thiệu về MUnit trong Mule ESB

Mule Flow này sẽ cho phép người dùng có thể truy cập đến ứng dụng của chúng ta và truyền một request parameter tên là number. Chúng ta sẽ return lại cho client dòng chữ “It’s 0.” hoặc “It’s not 0” dựa vào giá trị của parameter number có phải là 0 hay không?

Do đó:

  • HTTP Listener Connector được cấu hình để client có thể truy cập ứng dụng của chúng ta bằng địa chỉ http://localhost:8081/munit. Các bạn có thể xem thêm cách cấu hình của HTTP Listener Connector tại đây. Người dùng có thể truyền parameter number bằng cách request như sau: http://localhost:8081/munit?number=1.
  • Variable operation dùng để set một biến Flow tên là number bằng giá trị mà người dùng truyền trong request URL.

Giới thiệu về MUnit trong Mule ESB

  • Còn Groovy Component dùng để xử lý giá trị mà người dùng truyền vào để return lại kết quả.

Giới thiệu về MUnit trong Mule ESB

Lúc này, nếu các bạn chạy ứng dụng thì sẽ thấy kết quả như sau:

Giới thiệu về MUnit trong Mule ESB

Giới thiệu về MUnit trong Mule ESB

OK, bây giờ chúng ta sẽ sử dụng MUnit để viết Unit Test cho Mule Flow của chúng ta các bạn nhé!



Đầu tiên, các bạn hãy right-click vào project của chúng ta, sau đó chọn New rồi chọn MUnit Test:

Giới thiệu về MUnit trong Mule ESB

Trong cửa sổ trên, các bạn hãy chọn Mule Flow mà chúng ta cần test, rồi đặt tên tập tin MUnit Test theo ý của mình. Ở đây, mình cài đặt như sau:

Giới thiệu về MUnit trong Mule ESB

Rồi nhấn Finish để tạo tập tin MUnit Test các bạn nhé! Nội dung của tập tin MUnit Test này sẽ như sau:

Giới thiệu về MUnit trong Mule ESB

Các bạn có thể thấy nội dung ban đầu của tập tin MUnit Test này đang sử dụng Flow Reference để reference tới Mule Flow mà chúng ta cần test. Nhiệm vụ của chúng ta chỉ là cài đặt input data và expectation sau khi Mule Flow này xử lý là gì thôi.

Để cài đặt input data, các bạn hãy sử dụng Set Message component của MUnit bằng cách kéo thả nó vào trước Flow Reference đang có sẵn như sau:

Giới thiệu về MUnit trong Mule ESB

Set Message component này cho phép chúng ta xây dựng một Mule Message hoàn chỉnh bao gồm Payload và các thông tin Header của một Mule Message. Cấu hình của Set Message component này như sau:

Giới thiệu về MUnit trong Mule ESB

Ở đây, chúng ta có ô Payload để set payload cho Mule Message, còn nút Add property cho phép chúng ta thêm các thông tin khác như Header của Mule Message chẳng hạn.

Trong phần test này mình sẽ test trường hợp người dùng truyền parameter number = 0 nên mình sẽ thêm một Property tên là “http.query.params”, giá trị là “#[[‘number’: ‘0’]]” với type là INBOUND như sau:

Giới thiệu về MUnit trong Mule ESB

Bây giờ, chúng ta sẽ setup phần expectation với input data như trên.

Giống như JUnit, chúng ta có class Assert để so sánh expectation của chúng ta với giá trị sau khi đoạn code xử lý xong. Trong MUnit, chúng ta cũng có nhiều Assert component cho phép chúng ta làm điều này.

Giới thiệu về MUnit trong Mule ESB

Nhìn vào tên gọi của mỗi Assert component, các bạn cũng biết tác dụng của chúng rồi phải không?:D

Ở đây, trong ví dụ này, nhu cầu của mình là kiểm tra đoạn text mà Mule Flow trả về với expectation là “It’s 0.” nên mình sẽ dùng Assert Equals

Giới thiệu về MUnit trong Mule ESB

với cấu hình như sau:

Giới thiệu về MUnit trong Mule ESB

OK, giờ thử chạy bằng cách click chuột phải vào tập tin MUnit Test rồi chọn Run As, xong chọn MUnit xem sao các bạn.

Kết quả:

Giới thiệu về MUnit trong Mule ESB

Màu xanh có nghĩa là pass test hết đó các bạn. Ở đây, MUnit còn cho phép chúng ta xem Mule Flow Coverage là bao nhiêu luôn. 100% là hoàn hảo đấy các bạn 😀

 

Add Comment