Sobes.tech
Junior — Middle

Mockok a tesztelésben és miért szükségesek

sobes.tech MI

Válasz az MI-től

A tesztekben a mock (hamis) objektumok olyan objektumok, amelyek utánozzák a rendszer valódi függőségeinek viselkedését. Ezek szükségesek a tesztelt kód elkülönítéséhez a külső komponensektől, hogy a tesztek gyorsak, megbízhatóak és reprodukálhatóak legyenek.

Például, ha egy függvény egy adatbázistól függ, ahelyett, hogy valódi kapcsolatot használna, egy előre meghatározott adatokat visszaadó mockot lehet alkalmazni. Ez lehetővé teszi a függvény logikájának ellenőrzését anélkül, hogy az adatbázis problémái miatt hibák lépnének fel.

Go nyelvben a mockokat gyakran interfészek és speciális könyvtárak, például gomock vagy testify/mock segítségével hozzák létre.

Egyszerű mock példa Go nyelven:

// Interfész
 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
 }

// A tesztben
 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("nem várt felhasználónév")
     }
 }