Introducción
Las pruebas unitarias son una parte esencial del desarrollo de software, ya que permiten verificar que las unidades individuales de código (como métodos y clases) funcionen correctamente. En Ruby, Minitest es una biblioteca popular para realizar pruebas unitarias. En esta sección, aprenderás a escribir y ejecutar pruebas unitarias utilizando Minitest.
¿Qué es Minitest?
Minitest es una biblioteca de pruebas para Ruby que proporciona un conjunto completo de herramientas para escribir y ejecutar pruebas. Es ligera, rápida y viene incluida en la biblioteca estándar de Ruby, lo que significa que no necesitas instalar nada adicional para comenzar a usarla.
Configuración del Entorno
Antes de comenzar a escribir pruebas con Minitest, asegúrate de tener Ruby instalado en tu sistema. Puedes verificarlo ejecutando el siguiente comando en tu terminal:
Si Ruby está instalado, deberías ver la versión de Ruby en la salida. Si no está instalado, sigue las instrucciones en Configuración del Entorno para instalar Ruby.
Escribiendo tu Primera Prueba con Minitest
Vamos a escribir una prueba simple para una clase Calculator
que tiene un método add
para sumar dos números.
Paso 1: Crear la Clase Calculator
Primero, crea un archivo llamado calculator.rb
y define la clase Calculator
con el método add
:
Paso 2: Crear el Archivo de Pruebas
Crea un archivo llamado test_calculator.rb
donde escribirás tus pruebas. Este archivo debe requerir tanto Minitest como la clase Calculator
.
# test_calculator.rb require 'minitest/autorun' require_relative 'calculator' class TestCalculator < Minitest::Test def test_add calculator = Calculator.new result = calculator.add(2, 3) assert_equal 5, result end end
Explicación del Código
require 'minitest/autorun'
: Esto carga Minitest y configura el entorno para ejecutar las pruebas automáticamente.require_relative 'calculator'
: Esto carga la claseCalculator
que vamos a probar.class TestCalculator < Minitest::Test
: Define una clase de prueba que hereda deMinitest::Test
.def test_add
: Define un método de prueba. Los métodos de prueba deben comenzar contest_
.calculator = Calculator.new
: Crea una instancia de la claseCalculator
.result = calculator.add(2, 3)
: Llama al métodoadd
con los argumentos2
y3
.assert_equal 5, result
: Verifica que el resultado sea5
. Si no lo es, la prueba fallará.
Paso 3: Ejecutar las Pruebas
Para ejecutar las pruebas, simplemente ejecuta el archivo test_calculator.rb
en tu terminal:
Deberías ver una salida similar a la siguiente:
Run options: --seed 12345 # Running: . Finished in 0.001234s, 1.0000 runs/s, 1.0000 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
Esto indica que se ejecutó una prueba (1 runs
) y que todas las aserciones pasaron (0 failures
).
Ejercicios Prácticos
Ejercicio 1: Prueba del Método subtract
Añade un método subtract
a la clase Calculator
y escribe una prueba para él.
Solución
- Modifica la clase
Calculator
para incluir el métodosubtract
:
- Añade una prueba para el método
subtract
entest_calculator.rb
:
# test_calculator.rb require 'minitest/autorun' require_relative 'calculator' class TestCalculator < Minitest::Test def test_add calculator = Calculator.new result = calculator.add(2, 3) assert_equal 5, result end def test_subtract calculator = Calculator.new result = calculator.subtract(5, 3) assert_equal 2, result end end
- Ejecuta las pruebas:
Ejercicio 2: Prueba del Método multiply
Añade un método multiply
a la clase Calculator
y escribe una prueba para él.
Solución
- Modifica la clase
Calculator
para incluir el métodomultiply
:
# calculator.rb class Calculator def add(a, b) a + b end def subtract(a, b) a - b end def multiply(a, b) a * b end end
- Añade una prueba para el método
multiply
entest_calculator.rb
:
# test_calculator.rb require 'minitest/autorun' require_relative 'calculator' class TestCalculator < Minitest::Test def test_add calculator = Calculator.new result = calculator.add(2, 3) assert_equal 5, result end def test_subtract calculator = Calculator.new result = calculator.subtract(5, 3) assert_equal 2, result end def test_multiply calculator = Calculator.new result = calculator.multiply(4, 3) assert_equal 12, result end end
- Ejecuta las pruebas:
Resumen
En esta sección, aprendiste a escribir y ejecutar pruebas unitarias utilizando Minitest en Ruby. Cubrimos los siguientes puntos:
- Qué es Minitest y cómo configurarlo.
- Cómo escribir una prueba simple para una clase
Calculator
. - Cómo ejecutar las pruebas y verificar los resultados.
- Ejercicios prácticos para reforzar los conceptos aprendidos.
En la siguiente sección, exploraremos el Desarrollo Guiado por Comportamiento (BDD) con RSpec, otra herramienta popular para pruebas en Ruby.
Curso de Programación en Ruby
Módulo 1: Introducción a Ruby
Módulo 2: Conceptos Básicos de Ruby
Módulo 3: Trabajando con Colecciones
Módulo 4: Programación Orientada a Objetos en Ruby
- Clases y Objetos
- Variables y Métodos de Instancia
- Variables y Métodos de Clase
- Herencia
- Módulos y Mixins
Módulo 5: Conceptos Avanzados de Ruby
- Bloques, Procs y Lambdas
- Metaprogramación
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Expresiones Regulares
Módulo 6: Introducción a Ruby on Rails
- ¿Qué es Ruby on Rails?
- Configuración del Entorno Rails
- Creando una Aplicación Simple en Rails
- Arquitectura MVC
- Enrutamiento
Módulo 7: Pruebas en Ruby
- Introducción a las Pruebas
- Pruebas Unitarias con Minitest
- Desarrollo Guiado por Comportamiento con RSpec
- Mocking y Stubbing
Módulo 8: Mejores Prácticas en Ruby
- Estilo de Código y Convenciones
- Refactorización
- Optimización del Rendimiento
- Mejores Prácticas de Seguridad