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

Wie kann ich importierte Paketfunktionen in Go für effektive Tests verspotten?

Linda Hamilton
Freigeben: 2024-12-18 09:41:10
Original
228 Leute haben es durchsucht

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

Aus Paketen in Go importierte Funktionen verspotten

Beim Testen von Go-Methoden, die aus externen Paketen importierte Funktionen verwenden, kann es für effektive Tests erforderlich sein, diese externen Funktionen zu verspotten. Ein Ansatz besteht darin, den Code umzugestalten und einen Zwischenfunktionsaufruf einzuführen, anstatt die externe Funktion direkt aufzurufen.

Im bereitgestellten Beispiel:

import x.y.z

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

Erstellen Sie eine neue Variable zSomeFunc vom Typ func und Initialisieren Sie es mit der externen Funktion z.SomeFunc. Lassen Sie dann Ihr Paket zSomeFunc anstelle von z.SomeFunc aufrufen.

var zSomeFunc = z.SomeFunc

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

Jetzt können Sie in Ihren Tests zSomeFunc eine andere Funktion zuweisen, eine, die im Test definiert ist und einen vordefinierten Wert zurückgibt oder führt bestimmte Aktionen aus. Dadurch können Sie das Verhalten der externen Funktion zu Testzwecken nachahmen.

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

    zSomeFunc = func() int {
        // Do whatever you want to do and return whatever value you need.
        return 1
    }

    // Call the tested function.
    abc()

    // Test the expected behavior.
}
Nach dem Login kopieren

Alternativ können Sie eine Scheinimplementierung des x.y.z-Pakets erstellen und das Go Mocking Framework verwenden, um die Funktion SomeFunc() gezielt nachzuahmen .

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