Sobes.tech
Junior — Middle

Kāda ir galvenā Mock objektu loma un pielietojums testēšanas procesā?

sobes.tech AI

Atbilde no AI

Mock objekti tiek izmanto testos, lai simulētu reālu komponentu uzvedību, ar kuriem mijiedarbojas testējamais modulis. Galvenā mock loma ir izolēt testēto kodu no ārējām atkarībām (piemēram, datu bāzēm, tīkla pakalpojumiem), lai testi būtu ātri, uzticami un atkārtojami.

Mock objektu izmantošana ļauj:

  • pārbaudīt mijiedarbību ar atkarībām (piemēram, metožu izsaukumi, pārsūtītie parametri)
  • simulēt dažādus atkarību darbības scenārijus (panākumi, kļūdas, aizkaves)
  • vienkāršot testēšanas vidi.

Piemērs Go valodā, izmantojot interfeisus un mockus, testējot funkciju, kas izsauc ārēju pakalpojumu:

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
}

// Testā izveidojam mock:

type MockAPI struct {}

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

// Tests
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("negaidīts rezultāts: %v, kļūda: %v", result, err)
    }
}