Sobes.tech
Junior — Middle

Mocki w testach i dlaczego są potrzebne

sobes.tech AI

Odpowiedź od AI

Mocki (sztuczki) w testowaniu to obiekty zastępcze, które imitują zachowanie rzeczywistych zależności systemu. Są potrzebne do izolacji testowanego kodu od zewnętrznych komponentów, aby testy były szybkie, niezawodne i powtarzalne.

Na przykład, jeśli funkcja zależy od bazy danych, zamiast rzeczywistego połączenia można użyć mocka, który zwraca wcześniej zdefiniowane dane. Pozwala to sprawdzić logikę funkcji bez ryzyka awarii z powodu problemów z bazą danych.

W Go mocki często tworzy się za pomocą interfejsów i specjalnych bibliotek, takich jak gomock lub testify/mock.

Przykład prostego mocka w Go:

// Interfejs
 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
 }

// W teście
 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("nieoczekiwana nazwa użytkownika")
     }
 }