Apabila menyepadukan perpustakaan pihak ketiga dalam ujian fungsi Go, anda perlu menggunakan fungsi TestMain, fungsi t.Cleanup atau suntikan kebergantungan. Fungsi TestMain boleh dijalankan sebelum dan selepas semua ujian untuk memulakan dan membersihkan perpustakaan pihak ketiga. Fungsi t.Cleanup dijalankan selepas setiap ujian dijalankan dan digunakan untuk membersihkan sumber. Suntikan kebergantungan menghantar contoh perpustakaan pihak ketiga ke dalam fungsi yang sedang diuji untuk memudahkan kawalan persekitaran ujian.
Cara untuk menyepadukan perpustakaan pihak ketiga dalam ujian fungsi Go
Dalam ujian fungsi Go, kita perlu mengasingkan kod yang sedang diuji untuk mengelakkan kesan sampingan yang tidak dijangka. Dalam sesetengah kes, kami mungkin perlu menggunakan perpustakaan pihak ketiga dalam ujian kami, yang boleh memperkenalkan kerumitan tambahan.
Begini cara menyepadukan perpustakaan pihak ketiga dalam ujian fungsi Go:
1 Cipta fungsi TestMain
Fungsi TestMain berjalan sebelum dan selepas semua ujian dijalankan. Kami boleh menggunakannya untuk memulakan dan membersihkan perpustakaan pihak ketiga.
import ( "testing" "github.com/stretchr/testify/assert" "github.com/mypackage/mylibrary" ) func TestMain(m *testing.M) { mylibrary.Initialize() code := m.Run() mylibrary.Cleanup() os.Exit(code) }
2. Menggunakan t.Cleanup
Fungsi t.Cleanup akan berjalan selepas setiap ujian dijalankan. Kita boleh menggunakannya untuk membersihkan sumber yang ditinggalkan oleh perpustakaan pihak ketiga.
func TestFunction(t *testing.T) { defer t.Cleanup(func() { mylibrary.Cleanup() }) // 测试代码 }
3. Suntikan Ketergantungan
Kaedah lain ialah menggunakan suntikan kebergantungan untuk menghantar contoh perpustakaan pihak ketiga ke dalam fungsi yang sedang diuji. Ini membolehkan kami mengawal persekitaran ujian perpustakaan dengan lebih mudah.
func TestFunctionWithDependency(t *testing.T) { // 在测试代码中 mockLibrary := mylibrary.NewMockLibrary() // ... // 在受测函数中 funcUnderTest(mockLibrary) }
Contoh Praktikal
Sebagai contoh, mari kita pertimbangkan fungsi yang menggunakan perpustakaan klien gRPC untuk membuat panggilan rangkaian. Kami menggunakan perpustakaan palsu dalam ujian kami untuk mensimulasikan panggilan rangkaian dan mengesahkan kefungsian:
import ( "testing" "github.com/stretchr/testify/assert" "github.com/grpc-ecosystem/go-grpcmock" ) func TestNetworkCall(t *testing.T) { defer t.Cleanup(func() { grpcmock.Uninstall() }) mockClient, err := grpcmock.NewClientInterceptorMock() assert.NoError(t, err) grpcmock.RegisterMockClient(mockClient, &_serverClient) // 测试代码 }
Dengan menyepadukan perpustakaan pihak ketiga, kami boleh melanjutkan skop kes ujian dan meningkatkan kebolehpercayaan fungsi Go.
Atas ialah kandungan terperinci Cara mengintegrasikan perpustakaan pihak ketiga dalam ujian fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!