Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menangkap dan Menguji Output Log dalam Go Tests?
Mengakses Output Log dalam Go Tests
Dalam Go, pakej log menyediakan cara yang mudah untuk log mesej. Walau bagaimanapun, apabila menulis ujian yang berinteraksi dengan kod yang menjana mesej log, menguji mesej ini boleh menjadi satu cabaran.
Pertimbangkan fungsi readByte berikut yang mencatat ralat apabila ditemui:
func readByte(/*...*/) { // ... if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } // ... }
Dalam fail ujian yang sepadan, anda boleh cuba mengesahkan output ralat menggunakan:
c.Assert(OUTPUT, check.Matches, "teste")
Walau bagaimanapun, pendekatan ini tidak akan berfungsi kerana pembolehubah OUTPUT tidak mempunyai akses kepada penimbal log. Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah untuk menangkap output log semasa ujian.
Menangkap Output Log
Satu pendekatan untuk menangkap output log ialah mengubah hala sementara output standard di mana log dicetak. Ini boleh dicapai melalui fungsi log.SetOutput, seperti yang ditunjukkan dalam contoh berikut:
func TestReadByte(t *testing.T) { var buf bytes.Buffer // Update output to write to the buffer log.SetOutput(&buf) // Reset output to original after test defer func() { log.SetOutput(os.Stderr) }() readByte() // Verify the buffer contains the expected log message t.Log(buf.String()) }
Menjalankan ujian akan menghasilkan output yang serupa dengan:
ERROR Couldn't read first byte
Ini menunjukkan cara anda boleh mengakses dan mengesahkan output log dengan berkesan dalam ujian Go anda, membolehkan anda menguji secara menyeluruh kelakuan kod yang menjana log.
Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Menguji Output Log dalam Go Tests?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!