- 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 de TDD para Service Object de Notificaciones por Correo
Clase 24 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 diseñar un service object aplicando TDD?
Para abordar las notificaciones por correo utilizando un service object, emplearemos la metodología TDD (Test-Driven Development), que nos obliga a pensar en la prueba antes de la implementación. A través de TDD, aseguramos un desarrollo más robusto y confiable.
¿Cómo borrar métodos ejemplo?
Comienza revisando tu modelo de task y elimina cualquier método o código de ejemplo que hayas utilizado previamente. Por ejemplo, quita el sleep 5 insertado anteriormente en la línea cincuenta y siete del método same_email, ya que fue solo un recurso didáctico. Esto optimiza el flujo de trabajo al evitar bloqueos innecesarios.
¿Cómo estructurar correctamente los directorios?
Organiza correctamente tus archivos y carpetas para un mejor manejo del código:
- En el directorio raíz, crea una carpeta llamada
services. - Dentro de esta carpeta, crea una subcarpeta
tasks. - Mueve cualquier archivo relacionado al envío de correos a esta nueva estructura, asegurando claridad en el contexto de aplicación.
¿Qué convención utilizar para el nombre del servicio?
El nombre del servicio debe comenzar con un verbo para reflejar claramente la acción que ejecuta. En este caso, nombraríamos nuestro servicio como SendEmail o EnviarEmail. Es fundamental utilizar "CamelCase" al nombrar clases en Ruby para mantener la consistencia en el estilo de codificación.
¿Cómo definir una prueba utilizando RSpec?
Realizar pruebas efectivas con RSpec garantiza que nuestro código cumpla con las expectativas esperadas:
-
Configura una prueba base en un archivo con un nombre significativo, por ejemplo,
task_send_email_spec.rb. -
Define el descriptor (
describe) empleando el respectivo name space para indicar claramente el contexto de la prueba:describe Tasks::SendEmail do -
Crea un
subjectpara simplificar la instanciación del servicio en las pruebas:let(:service) { described_class.new } -
Establece contextos para diversas situaciones, como una tarea válida o una nula, documentando suficientemente el propósito de cada uno:
context 'with a valid task' do # Definir pruebas para tareas válidas aquí end
¿Cómo crear expectativas en las pruebas?
Especifica lo que esperas que el servicio haga mediante expectativas (expectations):
-
Para verificar el éxito de la operación:
it 'should return success' do result = service.call(task) expect(result.success).to be true expect(result.message).to eq('Successful') end -
Para evaluar casos de falla, como cuando no todos los requisitos se cumplen:
context 'without a task' do it 'should return failure' do result = service.call(nil) expect(result.success).to be false expect(result.message).to eq('Fail') end end
¿Cómo integrar Factory Bot para generar datos de prueba?
Integrar Factory Bot en nuestras pruebas permite crear instancias de objetos más rápidamente:
- Define una fábrica para la tarea:
let(:task) { build(:task) } - Asegura que tus datos de prueba sean persistentes antes de realizar una prueba específica:
before(:each) do task.save end
Este enfoque optimiza la metodología de desarrollo al permitir ejecutar pruebas unitarias en diferentes escenarios de validez y verificar qué tan eficientemente responde el servicio a estos entornos.