Bài 4: Fluent Interface là gì?

I. Fluent-Interface là gì?

Từ đầu series đến giờ, các bạn đã nghe nhiều đến Fluent-Interface, giờ mình sẽ giải thích ngắn gọn về nó:

Fluent-Interface là cách design API để làm những việc phức tạp, nhiều bước dưới dạng văn xuôi, gần gũi với con người.

Fluent-Interface thường dùng technique Method Chaining, ví dụ như:

  • Stream API của Java 8

Q: Vì sao lại áp dụng Fluent Interface vào trong UI Testing?

A: Vì UI Testing có 1 pattern khá giống nhau:

  1. Thực hiện Action A rồi B rồi C …
  2. Sau đó, kiểm tra kết quả ở các element

Do đó, ta có thể viết pattern thành 1 cái flow, rõ ràng từng bước, phù hợp với ý nghĩa của Fluent Interface

II. Áp dụng Fluent-Interface vào trong Test

Từ bài 2, code của test sẽ có hình dạng như sau

class LoginSpec3 extends BaseTest3{
 
    LoginPage login = getLoginPage();
    HomePage home = getHomePage();
 
    @Test
    public void admin_login_successfully(){
        login.act().inputUsername("giang")
                .inputPassword("12345678")
                .submit();
 
        home.verify().isRightURL();
    }
}

Mình sẽ phân tích từng đoạn code:

LoginPage login = getLoginPage();
HomePage home = getHomePage();

Đây là đoạn khởi tạo 2 pages, mình sử dụng phương pháp Static Method để khởi tạo, thay vì sử dụng trực tiếp Constructor, đây là cách được nói trong cuốn Effective Java của Joshua Bloch.

public void admin_login_successfully(){
        login.act().inputUsername("giang")
                .inputPassword("12345678")
                .submit();
 
        home.verify().isRightURL();
 }

loginhome ở đây đóng vai trò như các Class Factory, giúp gọi đến các function cần thiết, nó sẽ không chứa logic gì của business cũng như tương tác với selenium API:

  • login.act() —> return loginActController
  • home.verfiy() —> return homeVerifyController

III. Tổng kết

Bài sau mình sẽ hướng dẫn cách viết từng Class, và bạn sẽ thấy nó sẽ rất dễ thôi. Nếu không dễ thì chắc bạn học lại lập trình Java cơ bản là được. =)))))) Nếu đọc mà không hiểu thì hãy comment ở phía dưới nhé, mình sẽ giải thích và sửa lại bài viết.

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments