paint-brush
Cómo escribir sus primeras pruebas de modelo usando RSpec en aplicaciones Railspor@Vieira
11,109 lecturas
11,109 lecturas

Cómo escribir sus primeras pruebas de modelo usando RSpec en aplicaciones Rails

por Amanda3m2019/12/08
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Cómo escribir sus primeras pruebas de modelos usando RSpec en Ruby on Ruby on Rails. No estaba entendiendo una sola línea de código sobre esas pruebas. Así que decidí intentar escribirlo usando RSpec porque la sintaxis es mucho más similar al lenguaje humano que a otros. Pero es posible que se pregunte: ¿Por qué debo escribir pruebas cuando estoy aprendiendo algo nuevo? Bueno, a pesar de que esta es una habilidad imprescindible para los desarrolladores, escribir pruebas lo ayuda a asegurarse de que su código produzca los resultados que espera.

Company Mentioned

Mention Thumbnail
featured image - Cómo escribir sus primeras pruebas de modelo usando RSpec en aplicaciones Rails
Amanda HackerNoon profile picture

El pasado agosto de este año comencé a aprender Rails. Estaba siguiendo el libro Ruby on Rails Tutorial del sitio web Learn Enough To Be Dangerous que usa Minitest para probar su aplicación. La verdad es que no entendía ni una sola línea de código sobre esas pruebas. Así que decidí omitirlos e intentar escribirlo usando RSpec porque la sintaxis es mucho más similar al lenguaje humano que otros. Pero te estarás preguntando:

¿Por qué debo escribir pruebas cuando estoy aprendiendo algo nuevo?

Bueno, a pesar de que esta es una habilidad imprescindible para los desarrolladores, escribir pruebas lo ayuda a asegurarse de que su código produzca los resultados que espera. Dicho esto, ¡comencemos a codificar!

Configuración de la aplicación Rails

En primer lugar, creemos nuestra nueva aplicación Rails, escriba en su terminal:

 rails new app_for_test -T

El comando -T es para omitir la generación de

 Test::Unit
archivos y carpetas, que es exactamente lo que queremos porque vamos a usar RSpec para probar nuestra aplicación en lugar del valor predeterminado.

Ahora vaya a su archivo de gemas y agregue la gema RSpec en el grupo de desarrollo y prueba:

 group :development , :test do gem 'rspec-rails' end

Nota: si está utilizando Rails 6, debe escribir:

 'gem ' rspec-rails ', ' ~> 4.0 . 0 .beta2 '

Luego en tu terminal ejecuta el comando:

 bundle install

Para configurar RSpec en su aplicación y crear la carpeta Spec, ejecute:

 rails generate rspec:install

Comencemos con nuestro modelo. Crearé una tabla de películas simple que tenga un título, un director y una tarifa:

 rails generate model Movie title: string director: string rate: integer

Después:

 rails db :migrate

Ahora debería tener el siguiente archivo en su aplicación: spec/models/movie_spec.rb

Siguiendo los principios de TDD ( Desarrollo impulsado por pruebas ), vamos a construir nuestras pruebas y luego escribir el código. Pensemos en qué tipo de pruebas necesitamos para Model:

  • El título, el director y la tarifa deben estar presentes
  • El título y el director necesitan una extensión mínima y máxima
  • La tasa debe ser un número entero entre 1 y 10

En su spec/model/movie_spec.rb verá el bloque RSpec donde escribirá sus pruebas dentro:

 RSpec.describe Movie, type: :model do #tests go here end

Ahora crearemos bloques para cada comportamiento que esperamos en el modelo de la película. Así que recuerda ser lo más claro posible cuando describas tus pruebas porque necesitas ser un buen comunicador y hacerte comprensible no solo con las computadoras sino también con las personas.

Quizás te estés preguntando por qué subí una imagen, ¿verdad? Bueno, fue a propósito, por lo que de esta manera tendrá que escribir el código en lugar de simplemente copiar y pegar, y eso será realmente bueno para su memoria muscular y practicará con eventuales errores tipográficos.

Ahora para ejecutar sus pruebas, escriba en su terminal:

 rspec

El comando anterior ejecutará todas las pruebas disponibles en toda su aplicación. Cuando desee ejecutar pruebas solo en algunos archivos específicos, puede escribir:

 rspec spec /some_folder/ file_spec.rb

Ese formato en nuestra aplicación sería:

 rspec spec /models/m ovie_spec.rb

Solo tenemos un archivo de prueba en esta aplicación, por lo que ambos comandos obtendrán los mismos resultados, que en nuestro caso son: 8 ejemplos, 8 fallas y esto tiene sentido porque si presta atención a lo que esperamos en las pruebas verá que ninguno de ellos debería ser válido y todos eso están siendo válidos ahora porque tenemos las validaciones de nuestro modelo completamente vacías.

¡Ahora escribamos las validaciones necesarias para que nuestras pruebas sean ecológicas!

En tu app/models/movie.rb, escribe las siguientes líneas:

 validates :title , presence: true , length: { in: 6 .. 25 } validates :director , presence: true , length: { in: 5 .. 20 } validates :rate , presence: true , length: { in: 1 .. 10 }, numericality: { only_integer: true }

Ahora ejecute rspec nuevamente en su terminal:

 rspec

Debería obtener: 8 ejemplos, 0 fallas .

¡Y eso es! Acabas de escribir tus primeras pruebas usando RSpec. Entonces, si desea continuar, intente escribir algunas especificaciones para el controlador de Movies ahora y cuando se sienta seguro con ellas, puede buscar y aprender a usar Capybara, FactorbyBot y Faker para escribir pruebas más complejas. Puedes revisar esto repositorio para tener algunas ideas.

¡Buena suerte con tu viaje y FELIZ CODIFICACIÓN!