Introducción
Pasos para construir aplicaciones en Ruby on Rails
Retomando nuestro proyecto
Instalando MongoDB
Migrando nuestra aplicación: componentes, librerías y configuraciones
Migrando nuestra aplicación: modelos
Migrando nuestra aplicación: modelos restantes y seeds
Pruebas
¿Qué es TDD y BDD?
Construyendo nuestra fábrica de documentos de prueba
Esteroides para tus pruebas
Añadiendo pruebas de modelo
Añadiendo pruebas de modelo: validación de datos
Finalizando las pruebas de modelo
Añadiendo pruebas de peticiones
Creando y probando tareas de petición
Headless browser
Añadiendo pruebas de sistema: interacción del sistema
Añadiendo pruebas de sistema: comportamientos dinámicos
Interacción dinámica
Rails con café
Selectize, esteroides para tus selects
Retomando los formularios anidados
Mejorando la asignación de participantes
Notificaciones
Retomando las notificaciones del proyecto
Introducción a Service Objects
Construyendo prueba de servicio de notificación por correo
Construyendo servicio de notificación por correo
Introducción a procesos en background y Active Job
Creando un Job para la notificación de correo
Ciclos de vida
Introducción a máquinas de estado
Creando máquina de estados para la tarea
Creando servicio de gestión de estados de la tarea
Actualizando estados usando eventos
Modificando estados desde la interfaz
Cierre
Optimizaciones: fundamentos
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Probar adecuadamente tus jobs es crucial para asegurar la estabilidad de tus aplicaciones. En esta guía, te mostraremos cómo implementar pruebas para el background job que creaste previamente utilizando Sucker Punch. A través de estas pruebas podrás asegurarte de que los procesos asíncronos en tu aplicación se ejecuten correctamente. ¡Vamos a ello!
Las pruebas tipo Double son un concepto interesante que brinda flexibilidad para probar interacción entre componentes sin requerir que todo el sistema esté operativo. Estas permiten crear versiones simplificadas de objetos que se utilizan solo para los tests, facilitando verificar cómo interactúan ciertas partes del sistema.
Para comenzar, es necesario ajustar el archivo rails_helper
. Aquí es donde se configura todo lo relativo a las pruebas en tu aplicación. En este archivo añadimos una línea clave para que cada proceso asíncrono se ejecute en el entorno de pruebas de manera síncrona, haciéndolo más manejable durante el testing.
# Añadir en rails_helper.rb
require 'sucker_punch/testing/inline'
Luego de configurar tu entorno, es momento de generar el archivo de pruebas para el job que deseas testear:
rails generate rspec:job SendEmailJob
Este comando generará una estructura de carpetas y archivos dentro de tu proyecto que seguirán la estructura spec/jobs/tasks
.
Para probar que tu sistema de jobs no solo ejecuta tareas, sino que las ejecuta correctamente, el uso de Dobles es clave.
Class Double: Te permite observar métodos específicos dentro de una clase durante la ejecución.
Object Double: Crea una versión monitorizada de un objeto para verificar invocaciones de métodos.
A continuación, te mostramos un ejemplo de implementación:
describe SendEmailJob do
let(:task_id) { 1 }
let(:task_double) { class_double('Task').as_stub_const }
let(:service_double) { double('SendEmailService') }
it 'envía un email al ejecutar el job' do
allow(task_double).to receive(:find).and_return(task_double)
allow(service_double).to receive(:new).and_return(service_double)
allow(service_double).to receive(:call)
expect(task_double).to receive(:find).with(task_id)
expect(service_double).to receive(:call)
subject.perform_async(task_id)
end
end
Finalmente, para correr las pruebas, utiliza el comando rspec
en tu consola. Esto validará que los Dobles definidos están siendo llamados como se espera durante la ejecución del job:
rspec spec/jobs/send_email_job_spec.rb
Al aplicar estas estrategias, asegúrate de no sobreutilizar las pruebas tipo Dobles. Este método es relevante en situaciones donde los componentes ya han sido probados de manera aislada o cuando dependen de servicios externos que no están disponibles en el entorno de prueba.
Recuerda, las pruebas son un ciclo continuo en el desarrollo del software. Sigue explorando y practicando con otros tipos de pruebas para fortalecer tu aplicación. ¡Continúa tu aprendizaje y mejora tus habilidades de testing!
Aportes 1
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?