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

Patricia Arquette
Freigeben: 2024-10-26 17:32:30
Original
892 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ä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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!