Junior — Middle
Mocks im Testen und warum sie notwendig sind
sobes.tech KI
Antwort von AI
Mocks (Scheinobjekte) im Test sind Platzhalterobjekte, die das Verhalten echter Systemabhängigkeiten nachahmen. Sie sind notwendig, um den zu testenden Code von externen Komponenten zu isolieren, damit die Tests schnell, zuverlässig und reproduzierbar sind.
Zum Beispiel, wenn eine Funktion von einer Datenbank abhängt, kann anstelle einer echten Verbindung ein Mock verwendet werden, der vordefinierte Daten zurückgibt. Dies ermöglicht die Überprüfung der Logik der Funktion ohne Risiko von Ausfällen durch Probleme mit der Datenbank.
In Go werden Mocks oft mit Schnittstellen und speziellen Bibliotheken wie gomock oder testify/mock erstellt.
Beispiel für einen einfachen Mock in Go:
// Schnittstelle
type DB interface {
GetUser(id int) (User, error)
}
// Mock
type MockDB struct {}
func (m *MockDB) GetUser(id int) (User, error) {
return User{ID: id, Name: "Test User"}, nil
}
// Im Test
func TestGetUserName(t *testing.T) {
db := &MockDB{}
user, err := db.GetUser(1)
if err != nil {
t.Fatal(err)
}
if user.Name != "Test User" {
t.Errorf("unerwarteter Benutzername")
}
}