Pergi ke Golang untuk mempelajari amalan ujian integrasi untuk aplikasi web

PHPz
Lepaskan: 2023-06-24 09:12:43
asal
620 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, bahasa Golang semakin popular ia bukan sahaja digemari dalam bidang pembangunan web, tetapi juga digunakan secara meluas dalam perangkak web, perkhidmatan mikro dan bidang lain. Ujian aplikasi web adalah cara yang diperlukan untuk memastikan kualiti dan kestabilan aplikasi, dan ujian integrasi adalah bahagian penting dalam proses ujian aplikasi Web. Di bawah ini kami akan menumpukan pada amalan ujian penyepaduan aplikasi web dalam bahasa Golang.

Pertama, kita perlu memahami apa itu ujian integrasi. Ujian integrasi adalah untuk memasang pelbagai modul dalam sistem dan menguji sama ada kerjasama antara modul adalah normal, bertujuan untuk memastikan ketepatan dan kestabilan keseluruhan sistem. Pada masa yang sama, ujian integrasi juga merupakan bahagian paling kompleks bagi setiap pautan ujian, yang memerlukan pembangun untuk melaksanakan pelan ujian terperinci dan reka bentuk kes ujian untuk pelbagai situasi.

Dalam bahasa Golang, kami boleh menggunakan rangka kerja ujian untuk ujian integrasi, antaranya rangka kerja yang lebih biasa digunakan ialah ujian dan goconvey. Seterusnya, kita akan mengambil goconvey sebagai contoh untuk perbincangan yang mendalam.

  1. Goconvey bersepadu

goconvey ialah alat ujian Golang berasaskan web Pemasangannya sangat mudah, cuma masukkan arahan berikut dalam terminal:

$ go get -u github.com/smartystreets/goconvey
Salin selepas log masuk
  1. Buat fail ujian

Seterusnya, kita perlu mencipta direktori ujian dalam direktori projek. Dalam ujian, kita boleh mencipta struktur direktori berikut:

-- tests
   -- main_test.go
   -- controllers_test.go
   -- helpers_test.go
   -- fixtures_test.go
   -- models_test.go
   -- services_test.go
   -- utils_test.go
Salin selepas log masuk

Antaranya, fail main_test.go ialah fail kemasukan untuk memulakan alat ujian. Ia menggunakan perpustakaan goconvey untuk mendaftarkan modul yang perlu diuji dan bermula. Di sini, kami menggunakan goconvey.DefaultUh, mencipta pelayan ujian lalai, mencipta fail main_test.go dalam folder ujian dan menambah kod berikut:

package main

import (
    "testing"

    . "github.com/smartystreets/goconvey/convey"
)

func TestMain(m *testing.M) {
    Convey("Setup", m, func() {
        println("Before all tests")
        code := m.Run()
        println("After all tests")
        os.Exit(code)
    })
}
Salin selepas log masuk

Di sini, kami membina rangka kerja ujian, menggunakan untuk menguji setiap modul. Operasi khusus adalah seperti berikut:

Pertama, kami mengimport perpustakaan ujian dan perpustakaan goconvey.

Kedua, kami menulis kaedah ujian TestMain(), yang akan dilaksanakan sebelum semua kes ujian dilaksanakan. Di sini, kami menggunakan kaedah println() untuk mengeluarkan mesej sebelum dan selepas semua kes ujian dalam dua rentetan literal.

  1. Menulis kes ujian

Seterusnya, kami perlu menulis kes ujian untuk mengesahkan sama ada modul kami memenuhi jangkaan. Di sini, kami mengambil fail controllers_test.go sebagai contoh.

Dalam fail controllers_test.go, kami perlu mengimport modul yang kami uji dan perpustakaan yang perlu kami gunakan, kemudian tulis setiap kes ujian.

Sebagai contoh, kami mungkin mempunyai modul yang dipanggil ApiController yang mengandungi banyak pengawal. Kita boleh mencipta modul ujian yang dipanggil TestApiController untuk menguji semua pengawal dalam ApiController. Operasi khusus adalah seperti berikut:

Pertama, kami mengimport modul ApiController kami, perpustakaan ujian dan perpustakaan goconvey.

package main

import (
    "testing"

    . "github.com/smartystreets/goconvey/convey"
    "github.com/yourname/yourapp/controllers"
)
Salin selepas log masuk

Kemudian, kita boleh menulis kes ujian untuk menguji ApiController. Contohnya:

func TestApiController(t *testing.T) {
    Convey("Given a request to get users", t, func() {
        Convey("When I send the request", func() {
            response, err := test.Get("/users", nil)

            Convey("Then it should return a null response", func() {
                So(response, ShouldNotBeNil)
                So(response.Code, ShouldEqual, http.StatusOK)
                So(response.Body.String(), ShouldEqual, `{"success":true,"users":[]}`)
            })

            Convey("And it should return no error", func() {
                So(err, ShouldBeNil)
            })
        })
    })
}
Salin selepas log masuk

Kod di atas menunjukkan cara menguji kaedah GetUsers() dalam ApiController untuk mendapatkan pengguna. Dalam kes penggunaan ini, kami membina permintaan untuk mendapatkan pengguna dan kemudian mengujinya terhadap hasil yang dijangkakan. Kami menggunakan kaedah So() daripada pustaka goconvey untuk menyemak sama ada kod respons, badan respons dan objek ralat sepadan dengan jangkaan kami.

Kini, kami telah menyelesaikan satu kes ujian. Kes ujian ini akan menguji hasil yang sepadan apabila menghantar permintaan daripada laluan "/users" (curl -X GET localhost:8080/users).

Ringkasan

Setakat ini, kami telah berjaya menerangkan cara menggunakan rangka kerja ujian goconvey untuk ujian integrasi dalam bahasa Golang. Dalam proses amalan, kita bukan sahaja perlu memahami cara menggunakan rangka kerja ujian, tetapi juga perlu memahami aplikasi web, menulis dan menambah pelbagai kes ujian yang kompleks, dan terus mengulangi kod ujian. Saya berharap artikel ini dapat membantu majoriti peminat teknologi Golang dan meningkatkan kualiti dan kecekapan kerja pembangunan aplikasi.

Atas ialah kandungan terperinci Pergi ke Golang untuk mempelajari amalan ujian integrasi untuk aplikasi web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!