Sobes.tech
Junior — Middle

Kokius įrankius ir programavimo kalbas naudota kuriant Mock testus?

sobes.tech AI

Atsakymas iš AI

Norint kurti Mock testus, dažnai naudojamos specializuotos bibliotekos ir įrankiai, leidžiantys imituoti priklausomybių ir išorinių paslaugų elgseną. Priklausomai nuo programavimo kalbos, populiariausios galimybės yra:

  • JavaScript/TypeScript: Jest, Sinon.js — leidžia kurti mocks, stubs ir spy.
  • Java: Mockito, EasyMock — plačiai naudojami mock objektų kūrimui.
  • Python: unittest.mock, pytest-mock — įmontuotos ir trečiųjų šalių bibliotekos mock'ų kūrimui.
  • Go: gomock, testify/mock — įrankiai mock'ų generavimui ir naudojimui.

Pavyzdys Go kalba su testify/mock:

import (
    "testing"
    "github.com/stretchr/testify/mock"
)

// Interfeisas, kurį imituosime
type UserRepository interface {
    GetUser(id int) (*User, error)
}

// Mock struktūra
type MockUserRepository struct {
    mock.Mock
}

func (m *MockUserRepository) GetUser(id int) (*User, error) {
    args := m.Called(id)
    return args.Get(0).(*User), args.Error(1)
}

func TestGetUser(t *testing.T) {
    mockRepo := new(MockUserRepository)
    mockUser := &User{ID: 1, Name: "John"}

    mockRepo.On("GetUser", 1).Return(mockUser, nil)

    user, err := mockRepo.GetUser(1)
    if err != nil || user.Name != "John" {
        t.Fail()
    }

    mockRepo.AssertExpectations(t)
}

Taip pasirinkimas priklauso nuo naudojamos kalbos ir projekto reikalavimų.