Hướng dẫn kiểm tra đơn vị dành cho người mới bắt đầu GoLang
Mục tiêu của kiểm thử đơn vị là cho phép dự án phần mềm phát triển bền vững.

Với thử nghiệm, các lập trình viên nhằm mục đích phát hiện bất kỳ vấn đề tiềm ẩn nào trước khi triển khai ứng dụng vào sản xuất. Một trong những loại kiểm thử quan trọng thuộc trách nhiệm của các lập trình viên là kiểm thử đơn vị.
TL: DR / Mã nguồn:https://github.com/dilaragorum/go-testing-tutorial
Kiểm tra đơn vị

Ở bước đầu tiên, chúng ta hãy nghĩ về cách chúng ta viết một bài kiểm tra đơn vị cho chức năng Lời chào của chúng ta trong GoLang. Có một số quy tắc hướng dẫn chúng tôi viết các bài kiểm tra đơn vị của chúng tôi.
- Chúng ta phải tạo
<filename>_test.go
tệp. - Chúng ta phải viết hàm Go bình thường với chữ ký
func(*testing.T)
. - Chúng ta phải đặt tên của hàm với tiền tố
Test
.
go get -u github.com/stretchr/testify

Chúng tôi đã viết bài kiểm tra đơn vị con của chúng tôi bằng cách sử dụng Equal
phương pháp có chữ ký được chỉ định bên dưới và đến từ gói làm chứng.
func Equal(t TestingT, expected, actual interface{}) bool

Trong một số trường hợp, chúng tôi muốn kiểm tra các hàm tham số của mình bằng nhiều trường hợp thử nghiệm. Về cơ bản chúng ta có thể viết bài kiểm tra này bằng vòng lặp for bằng cách tạo một cấu trúc trường hợp thử nghiệm với các tham số cần thiết để gọi Add
hàm của chúng ta.

Thay vì sử dụng vòng lặp for cơ bản, chúng ta có thể sử dụng Chiến lược kiểm tra theo hướng bảng để triển khai chức năng này. Chúng ta sẽ thấy cách triển khai này trong phần sau.
Kiểm tra phụ (Nhiều t.Run)
Chúng ta có thể tạo Table Driven Test bằng cách sử dụng GoLand như hình dưới đây.

Theo thông tin đó, chúng tôi thực hiện lại Add
kiểm tra chức năng của chúng tôi như bên dưới.

Sử dụng chiến lược đó, chúng tôi có thể chạy các trường hợp thử nghiệm của mình một cách riêng biệt. Tuy nhiên, để sử dụng chức năng đó, chúng ta phải xác định name
biến trong TestCase
cấu trúc của mình và chuyển nó làm đối số đầu tiên t.Run(test.name,...)
.
Kiểm tra trình xử lý HTTP
Trình xử lý (bộ điều khiển): Chúng chịu trách nhiệm thực thi logic ứng dụng của bạn và viết tiêu đề và nội dung phản hồi HTTP.
Trong Go, chúng ta có thể dễ dàng kiểm tra trình xử lý HTTP mà không cần tốn phí kiểm tra tích hợp nhờ net/http/httptest
gói. Khi chúng tôi kiểm tra gói này, tất cả các phương pháp cần cho http.ResponseWriter
giao diện được triển khai trong Cấu trúc httptest.ResponseRecorder.
để xem xét , bạn có thể kiểm tra tài liệu . về cơ bản là một triển khai ghi lại mã trạng thái phản hồi, tiêu đề và nội dung thay vì thực sự ghi chúng vào kết nối HTTP. Tóm lại, là một triển khai ghi lại các đột biến của nó để kiểm tra sau này trong các thử nghiệm.httptest.ResponseRecorder
httptest.ResponseRecorder
http.ResponseWriter
httptest.ResponseRecorder
http.ResponseWriter

Vì vậy, một cách dễ dàng để kiểm tra đơn vị trình xử lý của bạn là tạo một httptest.ResponseRecorder
cấu trúc mới, chuyển nó cho hàm trình xử lý, sau đó kiểm tra lại sau khi trình xử lý trả về. Trong ví dụ của chúng tôi, chúng tôi tạo req
và rec
phù hợp với thông tin được đề cập ở trên và chuyển chúng cho của chúng tôi GreetingAPI
. Dữ liệu nhận được của chúng tôi sẽ được sử dụng để so sánh dữ liệu dự kiến để kiểm tra func xử lý của chúng tôi sẽ đến từ đâu rec.Body
.

Cảm ơn bạn đã đọc ! Không được quên điều đó đấy:
“Phần khó nhất của thử nghiệm đơn vị là đạt được giá trị tối đa với chi phí bảo trì tối thiểu.”
Mã nguồn:https://github.com/dilaragorum/go-testing-tutorial