Sobes.tech
Junior — Middle

Тестирлөө процессинде Mock объекттердин негизги ролу жана колдонулушу эмнеде?

sobes.tech AI

AIден жооп

Mock объекстер тестирлөөдө системдин чыныгы компоненттеринин жүрүм-турумун имитациялоо үчүн колдонулат, алар менен тесттелүүчү модуль өз ара аракеттенет. Mockтун негизги ролу — тесттелүүчү кодду тышкы көзкарандылыктардан (мисалы, маалыматтар базалары, тармактык кызматтар) бөлүп, тесттердин тез, ишенимдүү жана кайра иштелип чыгышын камсыз кылуу.

Mock объекттердин колдонулушу:

  • көзкарандылыктар менен өз ара аракеттенүүлөрдү текшерүү (мисалы, метод чакыруулары, өткөрүлгөн параметрлер)
  • көзкарандылыктардын ар кандай иштөө сценарийлерин симуляциялоо (жакшы, каталар, кечикүүлөр)
  • тесттик чөйрөнү жөнөкөйлөтүү.

Мисал катары Go тилинде интерфейстер жана mock колдонуп, тышкы кызматты чакыруу функциясын тестирлөө:

package service

type ExternalAPI interface {
    GetData(id string) (string, error)
}

func ProcessData(api ExternalAPI, id string) (string, error) {
    data, err := api.GetData(id)
    if err != nil {
        return "", err
    }
    return "Processed: " + data, nil
}

// Тестте mock түзөбүз:

type MockAPI struct {}

func (m *MockAPI) GetData(id string) (string, error) {
    if id == "123" {
        return "mocked data", nil
    }
    return "", fmt.Errorf("not found")
}

// Тест
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("күтүлгөн эмес натыйжа: %v, каталар: %v", result, err)
    }
}