- 1

Curso Intermedio de Ruby on Rails: Migración y Optimización Avanzada
01:37 - 2

Migración de Rails a MongoDB con Mongoid y Pruebas Automatizadas
03:38 - 3

Gestión de Múltiples Versiones de MongoDB en Linux
13:21 - 4

Migración de Rails a MongoDB con Mongoid: Configuración Inicial
10:17 - 5

Migración de Modelos de Active Record a Mongoid
08:35 - 6

Migración completa de aplicaciones con MongoDB y Rails
15:55
Pruebas con Doubles en Rails usando Sucker Punch
Clase 27 de 34 • Curso Intermedio de Ruby on Rails
Contenido del curso
- 7

Pruebas Automatizadas: Introducción a TDD y BDD en Desarrollo de Software
10:11 - 8
Creación de Fábricas Automatizadas con FactoryBot y Faker en Rails
04:18 - 9

Integración de Librerías para Pruebas Automatizadas en Rails
13:24 - 10

Pruebas de Modelos en Rails con Mongoid y RSpec
13:41 - 11

Pruebas de Validación y Guardado en Modelos Rails
11:39 - 12

Validación y Pruebas de Modelos en Ruby on Rails
07:48 - 13

Pruebas de Integración en Rails: Configuración y Ejecución Básica
10:54 - 14

Creación y prueba de tareas con métodos POST en Rails
12:39 - 15

Automatización de Pruebas con Headless Browser y Capybara en Rails
05:03 - 16

Pruebas de Sistema con KPIBara y WebDriver en Rails
13:35 - 17

Automatización de Pruebas de Sistema con Selenium y JavaScript
15:24
- 22

Envío de Emails Automático al Crear Tareas
04:43 - 23

Introducción a Service Objects en Ruby on Rails
09:00 - 24

Pruebas de TDD para Service Object de Notificaciones por Correo
12:18 - 25

Creación de Service Objects para Envío de Correos en Ruby on Rails
13:04 - 26

Procesos en Background con Sucker Punch en Rails
12:51 - 27

Pruebas con Doubles en Rails usando Sucker Punch
12:10
- 28

Máquinas de Estado Finito: Conceptos y Aplicaciones Prácticas
07:32 - 29

Creación de Máquinas de Estados con AASM en Ruby on Rails
13:37 - 30

Creación de Service Object para Gestión de Estados de Tareas en Rails
08:37 - 31

Acciones de Controlador y Pruebas en Ruby on Rails
10:43 - 32

Integración de AJAX en Gestión de Estados de Tareas en Ruby on Rails
13:07
¿Cómo probar el background job que desarrollaste?
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!
¿Qué es una prueba Double?
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.
Configuración de pruebas con Sucker Punch
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'
Generación del archivo de pruebas
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.
Implementación de Dobles en tus pruebas
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
Prueba de ejecución
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!