No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Unit Testing en Go

Curso de Unit Testing en Go

Maria Camila Lenis

Maria Camila Lenis

Mockeando clientes HTTP

10/15
Recursos

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Mi solución al reto:

func TestGetPokemosFromPokeApiNotFoundError(t *testing.T) {

	c := require.New(t)
	httpmock.Activate()

	defer httpmock.DeactivateAndReset()

	id := "bulbasaur"

	request := fmt.Sprintf("https://pokeapi.co/api/v2/pokemon/%s", id)

	httpmock.RegisterResponder("GET", request, httpmock.NewStringResponder(404, ""))

	_, err := GetPokemonFromPokeApi(id)
	c.NotNil(err)
	c.EqualError(ErrPokemonNotFound, err.Error())

}

Genial!
Una observación, como id se escribió “balbasaur” en vez de “bulbasaur” entonces, se me ocurre que una mejora del test sería hacer un assertion también con la url 😄
¿Alguna otra idea para esto, o quizá no sea necesario para algunos?

Les dejo en mi GitHub el poke_api_handler_test.go.
.
Para realizar este ejercicio he añadido la función GetPokemonApiUrl ara reducir la redundancia de distintas variables con el mismo nombre. Para el caso del success, he utilizado la función NewBytesResponder en lugar del NewStringResponder (ya que no tiene sentido convertir el body a string para luego volver a convertirlo a []byte).
.
Otra cosa relacionada con la anterior clase, en el caso del EqualError hay que tener en cuenta que el orden de los parámetros es (currentError, expectedErrorMessage). Aunque al final la validación funciona igual, en caso de error puede crear confusión, ya que mostrará los valores expected y actual invertidos.

Link de libreria httpmock aqui

Comando de instalacion

go get github.com/jarcoal/httpmock