Heim  >  Artikel  >  Backend-Entwicklung  >  So testen Sie Go-Anwendungen, die von Stdin lesen: Ein Leitfaden mit Mock-Readern und -Autoren

So testen Sie Go-Anwendungen, die von Stdin lesen: Ein Leitfaden mit Mock-Readern und -Autoren

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 17:32:30888Durchsuche

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

Testen von Go-Anwendungen, die in Stdin schreiben

Diese Anleitung zeigt, wie man Go-Testfälle schreibt, die mit Stdin-lesenden Anwendungen interagieren. Betrachten Sie die Beispielanwendung unten:

<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>

Erstellen eines Testfalls

Um die Standardfunktionalität dieser Anwendung zu testen, definieren wir eine separate Funktion, die von einem io.Reader liest und schreibt an einen io.Writer:

<code class="go">func testFunction(input io.Reader, output io.Writer) {
    // Your test logic here...
}</code>

Ändern der Hauptfunktion

In der Hauptfunktion rufen wir die testFunction mit stdin und stdout als Argumente auf:

<code class="go">func main() {
    testFunction(os.Stdin, os.Stdout)
}</code>

Den Testfall schreiben

In unserem Testfall können wir die testFunction jetzt direkt mit einem simulierten io.Reader und io.Writer testen:

<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>

Mit diesem Ansatz können Sie Anwendungen, die in stdin schreiben, effektiv testen und dabei die Testlogik von den Feinheiten der stdin- und stdout-Verwaltung in der Hauptfunktion isolieren.

Das obige ist der detaillierte Inhalt vonSo testen Sie Go-Anwendungen, die von Stdin lesen: Ein Leitfaden mit Mock-Readern und -Autoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn