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")
}
}