Rumah >pembangunan bahagian belakang >Golang >Cara Menguji Aplikasi Go yang Dibaca daripada Stdin: Panduan dengan Pembaca dan Penulis Olok-olok
Menguji Aplikasi Go yang Menulis kepada Stdin
Panduan ini menunjukkan cara menulis kes ujian Go yang berinteraksi dengan aplikasi pembacaan stdin. Pertimbangkan contoh aplikasi di bawah:
<code class="go">package main import ( "bufio" "fmt" "io" "os" ) func main() { reader := bufio.NewReader(os.Stdin) for { fmt.Print("> ") bytes, _, err := reader.ReadLine() if err == io.EOF { os.Exit(0) } fmt.Println(string(bytes)) } }</code>
Mencipta Kes Ujian
Untuk menguji kefungsian stdin aplikasi ini, kami mentakrifkan fungsi berasingan yang berbunyi daripada io.Reader dan menulis kepada io.Writer:
<code class="go">func testFunction(input io.Reader, output io.Writer) { // Your test logic here... }</code>
Mengubah suai fungsi utama
Dalam fungsi utama, kami memanggil testFunction dengan stdin dan stdout sebagai argumen:
<code class="go">func main() { testFunction(os.Stdin, os.Stdout) }</code>
Menulis Kes Ujian
Dalam kes ujian kami, kini kami boleh terus menguji testFunction menggunakan mock io.Reader dan io.Writer:
<code class="go">func TestInput(t *testing.T) { input := "abc\n" output := &bytes.Buffer{} inputReader := bytes.NewReader([]byte(input)) testFunction(inputReader, output) if got := output.String(); got != input { t.Errorf("Wanted: %v, Got: %v", input, got) } }</code>
Dengan menggunakan pendekatan ini, anda boleh menguji aplikasi yang menulis ke stdin dengan berkesan, mengasingkan logik ujian daripada selok-belok pengurusan stdin dan stdout dalam fungsi utama.
Atas ialah kandungan terperinci Cara Menguji Aplikasi Go yang Dibaca daripada Stdin: Panduan dengan Pembaca dan Penulis Olok-olok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!