Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Hantaran Hujah dengan Betul di Golang?
Menguji Penghantaran Hujah di Golang
Dalam Golang, hujah boleh dihantar ke fungsi menggunakan bendera. Untuk menguji kelulusan hujah, ujian boleh ditulis yang mensimulasikan penghantaran hujah baris arahan.
Masalahnya
Apabila menjalankan ujian berikut:
import ( "os" "testing" ) func TestArgs(t *testing.T) { expected := "bla" os.Args = []string{"-user=bla"} actual := passArguments() if actual != expected { t.Errorf("Test failed, expected: '%s', got: '%s'", expected, actual) } }
ujian gagal dengan mesej ralat yang menunjukkan bahawa hasil yang dijangkakan ("bla") tidak sepadan dengan keputusan sebenar ("root").
Penyelesaian
Masalah timbul kerana nilai pertama dalam os.Args ialah laluan ke executable itu sendiri. Untuk membetulkannya, kepingan os.Args harus dikemas kini untuk memasukkan kedua-dua boleh laku dan argumen:
os.Args = []string{"cmd", "-user=bla"}
Selain itu, os.Args ialah pembolehubah global, jadi adalah disyorkan untuk menyimpan keadaan asal dan pulihkannya selepas ujian untuk mengelakkan gangguan dengan ujian lain:
oldArgs := os.Args defer func() { os.Args = oldArgs }()
Atas ialah kandungan terperinci Bagaimana untuk Menguji Hantaran Hujah dengan Betul di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!