Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Interaksi stdin/stdout dengan Berkesan dalam Aplikasi Go?
Menguji Interaksi stdin/stdout dalam Go
Apabila membangunkan aplikasi yang berinteraksi dengan stdin dan stdout, adalah penting untuk mengesahkan tingkah laku mereka menggunakan ujian. Mari kita pertimbangkan contoh mudah di mana atur cara membaca baris daripada stdin dan menggemakannya kembali ke stdout.
Kes Ujian dengan Subproses
Pada mulanya, kes ujian ditulis menggunakan os /exec untuk melancarkan program sebagai subproses dan berkomunikasi dengan paip stdin dan stdoutnya. Walau bagaimanapun, pendekatan ini mengakibatkan kegagalan ujian disebabkan oleh penggunaan langsung stdin dan stdout fungsi utama.
Menguji Logik Secara Berasingan
Untuk menangani isu ini, kod tersebut hendaklah difaktorkan semula untuk memisahkan pengendalian stdin/stdout daripada logik utama. Fungsi baharu boleh ditakrifkan yang menerima io.Reader dan io.Writer sebagai parameter, mewakili stdin dan stdout. Fungsi ini boleh melakukan operasi yang diingini, seperti membaca dan menggemakan baris.
Kes Ujian yang Disemak
<code class="go">func TestEcho(t *testing.T) { in := bufio.NewReader(strings.NewReader("abc\n")) out := &bytes.Buffer{} echo(in, out) got := out.String() want := "abc\n" if got != want { t.Errorf("Wanted: %v, Got: %v", want, got) } }</code>
Dalam kes ujian yang disemak ini, fungsi gema diuji secara langsung. Ia menyediakan input kepada fungsi menggunakan pembaca rentetan dan menangkap output menggunakan penimbal. Dengan membandingkan output yang dijangkakan ("abcn") dengan output sebenar yang diperoleh daripada penimbal, ujian mengesahkan kelakuan yang betul bagi fungsi gema.
Pendekatan ini memisahkan ujian logik program daripada spesifik pengendalian. stdin dan stdout, menyediakan strategi ujian yang lebih dipercayai dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimana untuk Menguji Interaksi stdin/stdout dengan Berkesan dalam Aplikasi Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!