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

Wie teste ich die Argumentübergabe in Golang richtig?

Susan Sarandon
Freigeben: 2024-12-07 17:34:13
Original
866 Leute haben es durchsucht

How to Correctly Test Argument Passing in Golang?

Argumentübergabe in Golang testen

In Golang können Argumente mithilfe von Flags an Funktionen übergeben werden. Um die Übergabe von Argumenten zu testen, kann ein Test geschrieben werden, der die Übergabe von Befehlszeilenargumenten simuliert.

Das Problem

Beim Ausführen des folgenden Tests:

import (
    "os"
    "testing"
)

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

Der Test schlägt mit einer Fehlermeldung fehl, die darauf hinweist, dass das erwartete Ergebnis („bla“) nicht mit dem tatsächlichen Ergebnis übereinstimmt ("root").

Die Lösung

Das Problem entsteht, weil der erste Wert in os.Args der Pfad zur ausführbaren Datei selbst ist. Um dies zu beheben, sollte das os.Args-Slice so aktualisiert werden, dass es sowohl die ausführbare Datei als auch das Argument enthält:

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

Außerdem ist os.Args eine globale Variable, daher wird empfohlen, den ursprünglichen Zustand zu speichern und Stellen Sie es nach dem Test wieder her, um Störungen mit anderen Tests zu vermeiden:

oldArgs := os.Args
defer func() { os.Args = oldArgs }()
Nach dem Login kopieren

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