Golang tutorial 2: Viết test cho Go Function

Golang Jan 17, 2020

Ok, Chào mừng các bạn quay lại với chuỗi bài tự học Golang của mình =)))). Ở bài trước thì mình đã cài đặt Go thành công và viết thử được function in ra chuỗi "hello world" huyền cmn thoại. Đến bài này thì mình tìm cách test function đó. Bất cứ các bạn làm ngôn ngữ gì hay tham gia dự án nào thì có 1 điều cực kỳ quan trọng là phải viết test cho các function các bạn tạo ra. Giờ thì mình cùng viết test nào :D

Chắc các bạn còn nhớ ở bài trước mình in ra chuỗi "Hello, world" như trên trong hàm main đúng không, nói chung là nếu viết thế này mình sẽ không thể test được liệu hàm main có in đúng chuỗi mà mình mong muốn không nên mình sẽ sửa nó lại 1 chút như sau:

Ok, các bạn chỉ việc tách nó ra 1 function riêng biệt trả về chuỗi "Hello, world". Ở hàm main chỉ việc in cái hàm đó ra, nhiệm vụ của mình bây giờ chỉ là test cái hàm Hello() ở trên mà thôi :D. Giờ thì tạo file test cho hàm Hello() nào. Tạo 1 file hello_test.go:

Nào giờ các bạn chạy lệnh go test để thấy nó đã pass nhé, muốn failed thì đổi lại chuỗi ở biến want nhé.

Viết test cũng giống như viết một  function, với một vài quy tắc:

* Nó cần phải ở trong một tệp có tên như xxx_test.go

*  Test function phải bắt đầu bằng từ Test

*  Test function chỉ nhận một đối số t * tests.T

Nào bây giờ chúng ta làm một số bài tập cùng viết test cho nó nhé.

Example 1: Truyền vào 1 tham số là "name" và in ra chuỗi "Hello" + name vừa truyền vào ví dụ: name = "Chris" thì in ra "Hello Chris"

Ở đây mình gọi hàm Hello("Chris") VS sẽ báo đỏ ngay, run test thì go sẽ báo lỗi như thế này:

Ở đây các bạn có thể thấy nó báo có nhiều tham số đầu vào do hàm Hello cũ mình chưa khai báo tham số đầu vào cho nó. Chúng ta sửa lại hàm một chút nào:

Oh yeah, các bạn có hiểu hàm Hello rồi chứ, tham số đầu vào là "name" kiểu thì là "string" và hàm sẽ return "string". ok run test thử đi mấy bạn, hướng dẫn tới đó thôi :v

Constants

Constants được khai báo như sau:

const englishHelloPrefix ="Hello, "

Refactor code của bạn nào:

Với bất kỳ ngon ngữ nào thì "constants" đều sẽ giúp hệ thống của bạn cải thiện hiệu suất, thay vì mỗi lần hàm Hello được gọi, hệ thống phải khai báo chuỗi "Hello, " thì bạn có thể khai báo sẵn bằng cách gán cho nó bằng 1 biến "constants" và chỉ việc lấy nó ra xài cho tiết kiệm. Tất nhiên là ở ví dụ này thì việc cải thiện hiệu suất không là bao nhiêu tuy nhiên bạn cần ghi nhớ đến việc này xuyên suốt thời gian bạn lập trình. Luôn khai báo "constants" nếu có thể để tăng hiệu suất cho hệ thống của bạn. Hãy luôn ghi nhớ điều đó, góp gió thành bão nhé =))))). Không thì các bạn suy nghĩ thế này, cái hàm các bạn vữa viết ra, việc khai báo "constants" chỉ giúp các bạn tiết kiệm 1KB và bạn thấy nó không đáng kể bao nhiêu, tuy nhiên thử suy nghĩ đến việc ứng dụng của bạn phải chịu 1 triệu lần gọi đến hàm đó trong cùng 1 lúc thì nghĩa là bạn đang lãng phí 1000MB, tức là hệ thống phải cấp thêm 1000MB không đáng do code của bạn, hãy cứ nhân độ lãng phí của bạn lên hàng triệu xem khả năng scale up của ứng dụng của bạn lên. Luôn ghi nhớ nhé. Tích gió thành bão :D

Tổng kết nào. Sau bài này mình biết thêm cách khai báo "function", định nghĩa tham số đầu vào cùng kiểu cho đầu vào đầu ra, biết viết test cho các "function" mà mình đã tạo ra. các bạn theo dõi các example ở link github này nhé. Nhớ luyện tập cho thành thạo hơn. Và tìm hiểu các kiểu dữ liệu như "int", "string",.... cũng như các câu điều kiệu "if", "switch",..... mình sẽ không đi quá sâu vào cơ bản đâu vì hầu như mọi ngôn ngữ các phần đó na ná nhau rồi, các bạn xem trước để các bài sau khi thấy mình sử dụng thì sẽ không bị bỡ ngớ =)))) Thân ái chào quyết thắng =))))))) Có gì cần hỏi thì email cho mình qua địa chỉ: tlvduc92@gmail.com