Heim > Backend-Entwicklung > Golang > Wie kann ich importierte Funktionen in Go für effektive Tests simulieren?

Wie kann ich importierte Funktionen in Go für effektive Tests simulieren?

Linda Hamilton
Freigeben: 2024-12-25 03:55:17
Original
293 Leute haben es durchsucht

How Can I Mock Imported Functions in Go for Effective Testing?

Partielles Mocking für importierte Funktionen

In Go kann das Testen einer Funktion, die auf aus externen Paketen importierten Funktionen basiert, eine Herausforderung sein. Betrachten Sie das folgende Beispiel:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}
Nach dem Login kopieren

Können wir z.SomeFunc() in Go verspotten?

Refactoring für Mocking

Ja, mit a einfache Codeänderung. Durch die Einführung einer funktionstypisierten Variablen zSomeFunc und deren Initialisierung mit z.SomeFunc kann der Paketcode diese Variable anstelle von z.SomeFunc() aufrufen. Dadurch können wir die importierte Funktion während des Testens verspotten.

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}
Nach dem Login kopieren

Verspotten in Tests

In Tests können wir zSomeFunc eine benutzerdefinierte Funktion zuweisen, die sich wie beim Testen verhält.

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}
Nach dem Login kopieren

Durch die Umgestaltung des Codes können wir importierte Funktionen nachahmen und ihre Auswirkungen auf unseren Code effektiver testen. Diese Technik kann besonders nützlich sein, wenn Sie Abhängigkeiten von Drittanbietern testen oder bestimmte Funktionalitäten für gezielte Tests isolieren.

Das obige ist der detaillierte Inhalt vonWie kann ich importierte Funktionen in Go für effektive Tests simulieren?. 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