Sobes.tech
Junior — Middle

Мокове в тестването и защо са необходими

sobes.tech AI

Отговор от AI

Моковете (имитациите) в тестването са фалшиви обекти, които имитират поведението на реалните зависимости на системата. Те са необходими за изолиране на тестирания код от външни компоненти, за да бъдат тестовете бързи, надеждни и възпроизводими.

Например, ако функция зависи от база данни, вместо реална връзка може да се използва мок, който връща предварително зададени данни. Това позволява да се провери логиката на функцията без риск от сривове поради проблеми с базата данни.

В Go моковете често се създават чрез интерфейси и специални библиотеки като gomock или testify/mock.

Пример за прост мок в Go:

// Интерфейс
 type DB interface {
     GetUser(id int) (User, error)
 }

// Мок
 type MockDB struct {}

 func (m *MockDB) GetUser(id int) (User, error) {
     return User{ID: id, Name: "Test User"}, nil
 }

// В теста
 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("неочаквано име на потребителя")
     }
 }