Quick/Nimble para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué son Quick/Nimble y para qué sirven?

\n\n

Quick y Nimble son dos bibliotecas complementarias para el lenguaje Swift, diseñadas para escribir pruebas en el estilo Behavior-Driven Development (BDD). BDD es una metodología de desarrollo que se centra en el comportamiento de la aplicación desde el punto de vista del usuario, no en los detalles técnicos de implementación. En lugar de afirmaciones secas como XCTAssertEqual(a, b), describes lo que debería suceder: "cuando el usuario presiona un botón, la aplicación debe mostrar un saludo".

\n\n

Quick es un framework para describir escenarios de prueba. Proporciona un DSL (Domain-Specific Language) que permite estructurar las pruebas en una jerarquía: describe (descripción del contexto), context (especificación de condiciones) e it (prueba concreta). Esto hace que las pruebas sean legibles y comprensibles incluso para miembros no técnicos del equipo (gerentes, analistas).

\n\n

Nimble es una biblioteca para escribir matchers (afirmaciones). En lugar de los estándar XCTAssert, usas construcciones expresivas: expect(value).to(equal(expected)), expect(array).to(contain(element)). Nimble proporciona docenas de matchers integrados y permite crear fácilmente los tuyos propios.

\n\n

¿Para qué sirve esto?

\n
    \n
  • Legibilidad: Las pruebas en BDD se ven como una especificación. Puedes mostrarlas al cliente y asegurarte de que los requisitos se entienden correctamente.
  • \n
  • Estructuración: La jerarquía describe/context/it ayuda a organizar las pruebas lógicamente, evitando el "código espagueti".
  • \n
  • Matchers expresivos: Nimble hace que las afirmaciones sean más visuales e informativas. Los errores en las pruebas se vuelven comprensibles de inmediato.
  • \n
  • Facilidad de depuración: Cuando una prueba falla, no solo ves "se esperaba 5, se obtuvo 3", sino el contexto completo: "Cuando el usuario ingresa una contraseña incorrecta, el sistema debe mostrar un error".
  • \n
\n\n

Instalación de Quick/Nimble

\n\n

Quick y Nimble se instalan a través de CocoaPods o Swift Package Manager (SPM). Veremos ambos métodos.

\n\n

Instalación mediante CocoaPods

\n

Si aún no usas CocoaPods, instálalo:

\n
sudo gem install cocoapods
\n

En la raíz de tu proyecto, crea un archivo Podfile y agrega lo siguiente:

\n
target 'YourAppName' do\n  # Dependencias habituales (si las hay)\n  use_frameworks!\n\n  target 'YourAppNameTests' do\n    inherit! :search_paths\n    pod 'Quick'\n    pod 'Nimble'\n  end\nend
\n

Luego ejecuta:

\n
pod install
\n

Después de esto, abre el archivo .xcworkspace.

\n\n

Instalación mediante Swift Package Manager (SPM)

\n

En Xcode: File → Add Packages... e ingresa la URL del repositorio:

\n
https://github.com/Quick/Quick.git\nhttps://github.com/Quick/Nimble.git
\n

Selecciona la última versión estable y agrega los paquetes a tu objetivo de prueba (YourAppNameTests).

\n\n

Inicio rápido: primera prueba

\n

Creemos una clase simple Calculator y probémosla.

\n\n

Clase para probar

\n
// Calculator.swift\nimport Foundation\n\nclass Calculator {\n    func add(_ a: Int, _ b: Int) -> Int {\n        return a + b\n    }\n\n    func subtract(_ a: Int, _ b: Int) -> Int {\n        return a - b\n    }\n\n    func multiply(_ a: Int, _ b: Int) -> Int {\n        return a * b\n    }\n}
\n\n

Prueba usando Quick y Nimble

\n
// CalculatorSpec.swift\nimport Quick\nimport Nimble\n@testable import YourAppName // Reemplaza con el nombre de tu aplicación\n\nclass CalculatorSpec: QuickSpec {\n    override func spec() {\n        describe("Calculator") {\n            var calculator: Calc                    

Recommendations