Sobes.tech
Junior — Middle

Как реализираш заместителни обекти за модулно тестване?

sobes.tech AI

Отговор от AI

В Go за модулни тестове обикновено заместителните обекти (mocks, stubs) се реализират чрез интерфейси.

  1. Определете интерфейс, който описва необходимото поведение.
  2. Създайте структура, която реализира този интерфейс, с необходимата логика за теста.

Пример:

package service

type Database interface {
    GetUser(id int) (User, error)
}

type User struct {
    ID int
    Name string
}

// Реализация на заместителен обект за тест

type MockDB struct {}

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

// В теста може да се използва MockDB вместо реалната база данни

Може също да се използват външни библиотеки за мокове, като gomock или testify/mock.