Heim > Backend-Entwicklung > Golang > Wie kann ich importierte Funktionen in Go verspotten, um effektive Unit-Tests zu ermöglichen?

Wie kann ich importierte Funktionen in Go verspotten, um effektive Unit-Tests zu ermöglichen?

Linda Hamilton
Freigeben: 2024-12-29 20:51:13
Original
971 Leute haben es durchsucht

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

Verspotten importierter Funktionen in paketabhängigen Methoden

Beim Schreiben von Tests für Methoden, die auf aus externen Paketen importierten Funktionen basieren, kann Verspotten erforderlich werden um den Test von der tatsächlichen Implementierung der importierten Funktion zu isolieren. In Go kann dies durch ein einfaches Refactoring erreicht werden.

Betrachten Sie die folgende Methode, die eine Funktion aus dem x.y.z-Paket importiert und verwendet:

import x.y.z

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

Um SomeFunc() zu verspotten, erstellen Sie eine Variable zSomeFunc vom Funktionstyp, initialisiert mit der importierten Funktion:

var zSomeFunc = z.SomeFunc

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

In Tests können Sie eine andere Funktion zuweisen an zSomeFunc, eine in der Testsuite selbst definierte Funktion, um das Verhalten wie gewünscht zu manipulieren:

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

Mit diesem Ansatz können Sie aus anderen Paketen importierte Funktionen nachahmen und deren Verhalten während des Tests steuern, was die Isolierung und Überprüfung erleichtert Ihres Codes.

Das obige ist der detaillierte Inhalt vonWie kann ich importierte Funktionen in Go verspotten, um effektive Unit-Tests zu ermöglichen?. 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