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() ... }
Um SomeFunc() zu verspotten, erstellen Sie eine Variable zSomeFunc vom Funktionstyp, initialisiert mit der importierten Funktion:
var zSomeFunc = z.SomeFunc func abc() { ... v := zSomeFunc() ... }
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 }
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!