martes, 16 de febrero de 2021

Flutter: Pruebas unitarias a peticiones https

El proposito de este tutorial es create pruebas unitarias (unit test) a peticiones http usando la libreria https://pub.dev/packages/http. Tambien podremos ver como manejar excepciones lanzadas desde la capa de datos en la capa de presentacion. 

El codigo se puede descargar en Github

Prerequisitos (Opcional)

Nota: Para correr las pruebas unitarias no es necesario obtener un API key. 
  • Obtener un API key de https://newsapi.org/
  • Agregar el API key en la clase NewsProvider
  • Correr el commando pub run build_runner watch --delete-conflicting-outputs para generar el codigo

Imagenes


Respuesta exitosa API key no es valida API key no encontrada

Capa de datos


Clase NewsProvider

La responsabilidad de esta clase es comunicarse directamente con las REST APIS. 


Clase Article

La responsabilidad de esta clase es representar el Json que response la REST API. Para lograr esto de una manera sencilla utilizamos la libreria json_serializable.


Capa de presentacion


main.dart

La responsabilidad de esta capa es mostrar de una forma amigable la informacion que obtenemos de la REST API. Para manter el codigo pequeño tambien en esta capa manejamos los errores lanzados desde la capa de datos. 


Pruebas unitarias (Unit tests)


Respuestas simuladas (Mock responses)

Para las respuestas simuladas vamos a crear 3 archivos Json en la carpeta de test. Cada uno de ellos contiene una posible respuesta que regresaria la REST API real.
  • api_key_invalid.json
  • api_key_missing.json
  • top_headlines.json

api_key_invalid.json


api_key_missing.json


top_headlines.json


news_provider_test.dart

En este archivo vamos a crear cada uno de los test unitarios. Para correr los test hay que correr el comando flutter test test. Es importante recordar que los archivos de test siempre deben terminar con el nombre test.dart


Despues de correr las pruebas unitarias obtenemos el siguiente resultado:


Conclusion


En este tutorial aprendimos como crear pruebas unitarias con respuestas simuladas de una REST API. Tambien vimos como se pueden lanzar excepciones desde la capa de datos y manejarlas en la capa de presentacion. 

Si tienes alguna pregunta por favor haz un comentario. 

0 comments:

Publicar un comentario

Entradas populares