Sobes.tech
Middle

Testda mock-ob'ekt (soxta) nima?

sobes.tech AI

AIdan javob

Тестларда mock-объект (имитация объект) — бу махсус объект, ул системаның чын компонент яки модуленең тәртибен имитация итә. Ул тестланган кодны тышкы бәйлелекләрдән аерып тору өчен кулланыла, логиканы чын сервислар яки ресурслар йогынтысысыз тикшерү өчен.

Мәсәлән, әгәр сездә базага мөрәҗәгать итә торган функция бар икән, тестларда чын тоташу урынына алдан билгеләнгән мәгълүматлар кайтаручы mock-объект кулланырга мөмкин. Бу тестларны тизләтә һәм ышанычлылыгын арттыра.

Go телендә интерфейслар һәм mock куллану белән мисал:

// База белән эшләү өчен интерфейс
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Mock-реализация
type MockUserRepo struct {}

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

// Тестта
func TestGetUserName(t *testing.T) {
    repo := &MockUserRepo{}
    user, err := repo.GetUser(1)
    if err != nil {
        t.Fatal(err)
    }
    if user.Name != "Test User" {
        t.Errorf("Көтелгән: Test User, алынды: %s", user.Name)
    }
}

Шулай итеп, mock-объектлар тестлар өчен контрольле мохит булдырырга һәм логикадагы хаталарны тышкы системаларга бәйсез рәвештә ачыкларга ярдәм итә.