Sobes.tech
Junior — Middle

¿Cuál es el papel principal y la aplicación de los objetos Mock en el proceso de prueba?

sobes.tech AI

Respuesta de la IA

Los objetos mock se utilizan en las pruebas para simular el comportamiento de componentes reales del sistema con los que interactúa el módulo en prueba. La función principal del mock es aislar el código en prueba de dependencias externas (por ejemplo, bases de datos, servicios de red) para que las pruebas sean rápidas, confiables y reproducibles.

El uso de objetos mock permite:

  • Verificar las interacciones con las dependencias (por ejemplo, llamadas a métodos, parámetros pasados).
  • Simular diferentes escenarios de funcionamiento de las dependencias (éxito, errores, retrasos).
  • Simplificar la configuración del entorno de prueba.

Ejemplo en Go usando interfaces y mocks para probar una función que llama a un servicio externo:

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
}

// En la prueba creamos un mock:

type MockAPI struct {}

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

// Prueba
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("resultado inesperado: %v, error: %v", resultado, err)
    }
}