Rumah >pembangunan bahagian belakang >Golang >Cara Menguji Aplikasi Go yang Dibaca daripada Stdin: Panduan dengan Pembaca dan Penulis Olok-olok

Cara Menguji Aplikasi Go yang Dibaca daripada Stdin: Panduan dengan Pembaca dan Penulis Olok-olok

Patricia Arquette
Patricia Arquetteasal
2024-10-26 17:32:30964semak imbas

How to Test Go Applications That Read from Stdin: A Guide with Mock Readers and Writers

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn