Sobes.tech
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")
     }
 }