Rspec + Rails: Configurar el proyecto

Rspec + Rails: Configurar el proyecto

enmanuelm19@gmail.com2018-07-17 01:31:02 UTC

Configurar Rspec en una aplicación Rails


Este es el primero de una serie de artículos en el que veremos como utilizar Rspec para probar las características de nuestra aplicación. Se instalarán las dependencias necesarias para configurar el ambiente de pruebas.

Las gemas a usar son:

  • rspec-rails: Esta se encarga de generar el entorno para probar el aplicativo.
  • FactoryBot: Gema que se encarga de generar data según el diseño de nuestro aplicativo.
  • FFaker: En conjunto con FactoryBot genera datos de prueba de forma aleatoria.
  • shoulda-machers: Trae consigo comparadores que hacen realizar las pruebas de manera más sencilla.
  • Database-cleaner: Elimina la data de la base de datos cada vez que se realiza la prueba. De manera de no generar data que quede embasurada.
  • Capybara: Gema que simula la interacción de una persona con el aplicativo a través del navegador.
  • rails-controller-testing: Esta gema solo se tiene que instalar si se trabaja con la versión 5 de Rails, debido a que viene por defecto configurada en antiguas versiones, esta trae de nuevo la posibilidad de probar que data se asigna a las variables que definimos en los métodos del controlador.
  • Selenium-Webdriver: Esta gema nos permite manipular y levantar el navegador para interactuar con este.
  • SimpleCov: Esta gema nos ayuda a ver que tanto porcentaje de nuestro código ha sido probado.
Instalación

Nuestro Gemfile

group :test do
  gem 'capybara', '>= 2.15', '< 4.0'
  gem 'chromedriver-helper'
  gem 'database_cleaner'
  gem 'factory_bot_rails'
  gem 'ffaker'
  gem 'rails-controller-testing'
  gem 'rspec-rails'
  gem 'selenium-webdriver'
  gem 'shoulda-matchers'
  gem 'simplecov', require: false
end

Corremos bundle install para instalar las nuevas dependencias agregadas a nuestro proyecto.

Configuración

Para la instalación de Rspec y el resto de gemas es necesario correr ciertos comandos:

rails generate rspec:install

Este comando crea la carpeta spec/ en la raíz del proyecto, dentro de esta siguiendo las convenciones de la gema se deben crear las carpetas models/,controllers/,factories/,features/ para realizar las respectivas pruebas.

Para configurar la integración de estas gemas en el archivo spec/rails_helper.rb se deben colocar las siguientes líneas de código

RSpec.configure do |config|
  .
  .
  # Solo si es Rails 5, integrar aspectos como assigns en los specs de controladores (rails-controller-testing)
  [:controller, :view, :request].each do |type|
    config.include ::Rails::Controller::Testing::TestProcess, :type => type
    config.include ::Rails::Controller::Testing::TemplateAssertions, :type => type
    config.include ::Rails::Controller::Testing::Integration, :type => type
  end
  .
  .
  # Para integración con FactoryBot
  config.include FactoryBot::Syntax::Methods
  .
  .
  # Para no llenar de basura la base de datos de prueba(database-cleaner)
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end
end

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

Con esto hemos concluido esta primera parte de una serie de posts. En los siguientes veremos como generar data de prueba y los casos comunes de pruebas a nuestros modelos. Espero les sea de utilidad esta información. Cualquier duda, consejo o correción puedes comentar abajo.


Compartir