Junior — Middle
Как реализираш заместителни обекти за модулно тестване?
sobes.tech AI
Отговор от AI
В Go за модулни тестове обикновено заместителните обекти (mocks, stubs) се реализират чрез интерфейси.
- Определете интерфейс, който описва необходимото поведение.
- Създайте структура, която реализира този интерфейс, с необходимата логика за теста.
Пример:
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.