Ujian unit Go WebSocket boleh mengesahkan ketepatan dan keteguhan pelayan WebSocket. Pasang rangka kerja ujian Ginkgo dan Gomega. Buat dan mulakan pelayan WebSocket. Menulis ujian unit: Mewujudkan sambungan WebSocket. Hantar dan terima mesej. Sahkan respons. Jalankan ujian untuk mengesahkan kefungsian pelayan.
Go Panduan Pengujian Unit WebSocket
WebSocket ialah protokol rangkaian yang mewujudkan sambungan berterusan dua hala antara pelanggan dan pelayan. Dalam Go, [gorilla/websocket](https://godoc.org/github.com/gorilla/websocket) ialah perpustakaan popular untuk mencipta dan mengendalikan sambungan WebSocket. Ujian unit adalah penting semasa menulis pelayan WebSocket kerana ia mengesahkan ketepatan dan keteguhan kod. Artikel ini akan menyediakan panduan langkah demi langkah untuk menguji unit Go WebSocket menggunakan Ginkgo dan Gomega, dengan contoh praktikal.
Langkah 1: Pasang rangka kerja ujian
Gunakan Modul Go untuk mengurus kebergantungan, pasang Ginkgo dan Gomega dengan arahan berikut:
go get -u github.com/onsi/ginkgo/v2 go get -u github.com/onsi/gomega
Langkah 2: Cipta pelayan WebSocket
dan tulis modul GoC baru Pelayan WebSocket yang ringkas, sebagai contoh:package main import ( "github.com/gorilla/websocket" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { conn, err := websocket.Upgrade(w, r, nil, 1024, 1024) if err != nil { log.Println(err) http.Error(w, "Internal Server Error", http.StatusInternalServerError) return } log.Printf("WebSocket connection established") // Handle incoming messages and send responses... }) log.Println("Listening on port 8080") if err := http.ListenAndServe(":8080", nil); err != nil { log.Println(err) } }
Langkah 3: Tulis ujian unit
Gunakan rangka kerja Ginkgo dan Gomega untuk menulis ujian unit, contohnya:package main_test import ( "bytes" "net/http" "net/http/httptest" "testing" "github.com/gorilla/websocket" "github.com/onsi/ginkgo/v2" "github.com/onsi/gomega" ) var _ = ginkgo.Describe("WebSocket Server", func() { var ( ts *httptest.Server clientConn *websocket.Conn ) ginkgo.BeforeEach(func() { ts = httptest.NewServer(http.HandlerFunc(wsHandler)) var err error clientConn, _, err = websocket.DefaultDialer.Dial(ts.URL, nil) gomega.Expect(err).To(gomega.BeNil()) }) ginkgo.AfterEach(func() { ts.Close() clientConn.Close() }) ginkgo.It("should establish a WebSocket connection", func() { gomega.Expect(clientConn).NotTo(gomega.BeNil()) }) ginkgo.It("should send and receive messages", func() { // Send a message to the server err := clientConn.WriteMessage(websocket.TextMessage, []byte("Hello WebSocket!")) gomega.Expect(err).To(gomega.BeNil()) // Read the response from the server _, msg, err := clientConn.ReadMessage() gomega.Expect(err).To(gomega.BeNil()) // Verify the response gomega.Expect(string(msg)).To(gomega.Equal("Hello Client!")) }) })
Kes praktikal
Contoh penggunaan Gingo ini dan Gomega menguji kefungsian asas pelayan WebSocket untuk mewujudkan sambungan dan menghantar/menerima mesej. Anda boleh melanjutkan ujian ini untuk mengesahkan kes penggunaan lain, seperti pengesahan, had sambungan atau pengendalian ralat.Nota:
Atas ialah kandungan terperinci Bagaimana untuk menguji unit Go WebSocket?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!