es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cobertura de Pruebas – La Herramienta Go no Reconoce err != nil devuelve

Estoy aprendiendo un poco sobre la cobertura de pruebas en Golang y tengo algunos problemas interesantes.

Tengo un código bastante básico para llamar a una API y ejecutar http.Client.Do(request). Después de la ejecución, reviso si hay algún error y lo retorno si se encuentra.

resp, err := Client.Do(request)

if err != nil {
    return response, err
}

Además, he agregado pruebas para eso. Donde estoy simulando la función Do y devolviendo un error.

mocks.DoFunc = func(*http.Request) (*http.Response, error) {
    return nil, errors.New("Hola mundo")
}

Cuando registro la condición if err != nil, puedo ver que mi código se está ejecutando y se está capturando esta simple evaluación.

Mi problema comienza al ejecutar go tool cover -html=coverage.out. La salida indica que esta condición no está cubierta.

ENTONCES, ¿por qué puedo verificarlo al registrar y la herramienta go no lo detecta, qué me estoy perdiendo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que la condición no esté siendo cubierta porque el error que está retornando la función simulada Do no es el mismo que se está verificando en el código. Verificar nuevamente que el error retornado por la función simulada coincida con el error verificado en el código actual.

    Otra posibilidad es que el caso de prueba no esté cubriendo todos los escenarios posibles que podrían hacer que la función Client.Do retorne un error. Intenta agregar más casos de prueba para cubrir diferentes escenarios de error.

    También es posible que haya algunas rutas de código que no se estén ejecutando durante la prueba. Asegúrate de que todas las rutas de código estén siendo cubiertas por los casos de prueba.

    Por último, asegúrate de que el informe de cobertura se esté generando correctamente y que la herramienta go tool no esté reportando información de cobertura incorrecta.

Comments are closed.