Heim > Backend-Entwicklung > Golang > Wie teste ich die Argumentübergabe in Go richtig?

Wie teste ich die Argumentübergabe in Go richtig?

Mary-Kate Olsen
Freigeben: 2024-12-15 06:48:14
Original
861 Leute haben es durchsucht

How to Correctly Test Argument Passing in Go?

Argumentübergabe in Golang testen

Betrachten Sie den folgenden Code:

package main

import (
    "flag"
    "fmt"
)

func main() {
    passArguments()
}

func passArguments() string {
    username := flag.String("user", "root", "Username for this server")
    flag.Parse()
    fmt.Printf("Your username is %q.", *username)

    usernameToString := *username
    return usernameToString
}
Nach dem Login kopieren

Wir übergeben ein Argument an den kompilierten Code Code mit dem Befehl:

./args -user=bla
Nach dem Login kopieren

Dies zeigt Folgendes an Ausgabe:

Your username is "bla"
Nach dem Login kopieren

Testansatz

Um die manuelle Kompilierung und Ausführung zu vermeiden, möchten wir einen Test schreiben, der das Übergeben von Argumenten überprüft. Wir erstellen eine Testfunktion:

func TestArgs(t *testing.T) {
    expected := "bla"
    os.Args = []string{"-user=bla"}

    actual := passArguments()

    if actual != expected {
        t.Errorf("Test failed, expected: '%s', got:  '%s'", expected, actual)
    }
}
Nach dem Login kopieren

Problem

Wenn wir den Test ausführen, stoßen wir auf ein unerwartetes Ergebnis:

Your username is "root".Your username is "root".--- FAIL: TestArgs (0.00s)
    args_test.go:15: Test failed, expected: 'bla', got:  'root'
FAIL
coverage: 87.5% of statements
FAIL    tool    0.008s
Nach dem Login kopieren

Das Das Argument „bla“ wird nicht an die Funktion übergeben, was dazu führt, dass „root“ angezeigt wird Benutzername.

Lösung

Das Problem liegt in der Einstellung von os.Args. Das erste Argument in os.Args ist der Pfad zur ausführbaren Datei selbst. Um dies zu beheben, ändern wir es wie folgt:

os.Args = []string{"cmd", "-user=bla"}
Nach dem Login kopieren

Außerdem empfiehlt es sich, den ursprünglichen os.Args-Status zu speichern und ihn nach dem Test für andere Tests wiederherzustellen, die auf den richtigen Argumenten basieren.

Das obige ist der detaillierte Inhalt vonWie teste ich die Argumentübergabe in Go richtig?. 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