Simulacro de prueba de unidad de iOS usando swifty mocky

Nov 28 2022
Swift fue diseñado para ser seguro, admitiendo la reflexión de solo lectura. Por lo tanto, no hay forma de modificar su programa en tiempo de ejecución.

Swift fue diseñado para ser seguro, admitiendo la reflexión de solo lectura. Por lo tanto, no hay forma de modificar su programa en tiempo de ejecución. En general, es bueno, el código se ejecuta como se esperaba y otros componentes no pueden cambiarlo. Pero volviendo a nuestro tema, todos los marcos de simulación se basan en la reflexión para poder cambiar clases, tipos y objetos en tiempo de ejecución.

Este lenguaje necesita a sus superhéroes para escribir código comprobable, y los conocemos bien: ¡protocolos y extensiones! No importa qué implementación sea (clase, enumeración o estructura), el propósito de los protocolos permanece: definir abstracciones y agregar nuevas funciones a los tipos, incluso a los que no debemos.

¿Qué podemos hacer para burlarnos?

Utilice la metaprogramación para generar una implementación simulada completa.

Hay muchas bibliotecas que realizan el trabajo simulado para las pruebas unitarias, la mayoría de los álamos son Cuckoo y swifyMocky .

En este artículo, daré una descripción general de cómo podemos hacer la burla usando SwiftyMocky.

SwiftyMocky

https://github.com/MakeAWishFoundation/SwiftyMocky

Ventajas

  • Simular automáticamente los protocolos de Swift
  • Compatibilidad con genéricos
  • Configuración sencilla y ligera
  • buena documentacion
  • Sintaxis agradable y fácil (que utiliza autocompletar)
  • Marcar protocolos para ser simulados
  • Todos los protocolos de los directorios de origen que tengan esta anotación se agregarán a Mock.generated.swift
  • Todos los simulacros tienen un método dado (accesible como método de instancia o función global), con una sintaxis fácil de usar, lo que permite especificar cuáles deberían ser los valores de retorno para métodos dados (basados ​​en atributos especificados)
  • Todos los simulacros tienen un método de verificación (accesible como método de instancia o como función global), con una sintaxis fácil de usar, que permite verificar si se llamó a un método en el simulacro y cuántas veces. También proporciona una forma conveniente de especificar si los atributos del método son importantes (y cuáles)
  • Todos los simulacros tienen un método de ejecución (accesible como método de instancia o función global), con una sintaxis fácil de usar, lo que permite especificar el cierre, que se ejecutará al llamar al método stubbed

Configuración

  • Instalar usando Cocoapods
  • Instale CLI para una fácil generación de simulacros

> swiftymocky doctor # validar su configuración

> generar swiftymocky # generar simulacros

  • La generación de simulacros se basa en el archivo Mockfile.yml con la posibilidad de excluir las reglas de pelusa rápidas utilizando las reglas de pelusa excluidas

No hay tantas herramientas que nosotros, como desarrolladores, tenemos para burlarnos de Swift, con algunos límites estrictos debido al acceso de tiempo de ejecución limitado por idioma. Y aquí llegamos a la pregunta crítica: usar o no usar marcos externos para burlarse.

El conocido tío Bob sigue sin usarlos tanto como sea posible; él dice: “El punto en el que comienza a necesitar un marco de trabajo simulado es el mismo punto en el que el acoplamiento entre sus pruebas y el código se vuelve demasiado alto. Sin embargo, después de eso, debe esforzarse por mantener el acoplamiento entre su código y las pruebas lo suficientemente bajo como para que no necesite usar el marco de simulación con mucha frecuencia”.

¡Gracias por leer! Si te gustó este artículo, aplaude para que otras personas también puedan leerlo :)

Feliz codificación :v: