martes, 3 de noviembre de 2015

Mi primer rspec en Rails

Bueno, ¡Ya va siendo hora de hacer tests! Por que, nos aseguramos de que nuestro codigo funciona en cada nuevo cambio que hacemos o incluso antes de hacerlo. hay varios tipos de tests en rails, el que esta por defecto es el unity test, pero Rspec es el más famoso por se fácil de interpretar y de entender, aunque, eso si, un poco largo, Es una muy buena practica y podeis empezar con este tutorial, a hacer test driven developmnent!

Empezamos, con los más básico, vamos a isntalar el Gem o libreria dentro de nuestor proyecto.
en mi caso, uso rails 3.2.13 el rspec compatible, teneis que buscar cual es la compatibilidad en vuestro caso, ya sea en Rubygems  es  gem 'rspec-rails', '~> 3.2', '>= 3.2.1'
Otra cosa a tomar en cuenta es si necesitamos require 'spec_helper' o 'rails_helper' en el archivo spec.
Si falla algo lo mejor es ir buscando ell error en algun buscador, pero creo que no os he dicho nada nuevo ^^.
ejecuto para actualizar la libreria o gems:

bundle

Si la acualización de los gems fue bien,  ahora genero con rails los archivos para empezar a utilizar rspec.
rails generate rspec:install

Si creamos un modeo nuevo con rails generate model, nos generará unos archivos para poder hacer los tests y migrará los test también, si ya lo tenemos generado, tendremos que migrar los test (que es es este caso) nosotros mismos así:

bundle exec rake db:test:prepare

Usando el modelo hecho en el anterior post crearemos un archivo dentro de rspec/model/

un archivo con el nombre:

setup_rspec.rb

Y de contenido:

require "rails_helper"

RSpec.describe Setup, type: :model do

  before(:all)do
    @setup = Setup.new(title:"My Body")
    @sb4_setup = Sb4_Setup.new(san_type:"123456")
  end
  it "should have a matching title" do
    expect(@setup.title).to eq("My Body")
  end
  it "should have a matching san_type" do
    expect(@sb4_setup.san_type).to eq("123456")
  end
end

Ahora trata primero o escribelo y a ver si falla. Es bueno que falle. Así nos entrenaremos a hacer primero los tests y luego el codigo.
Y bueno, esa seria la primera versión, pero nos faltaria hacer tests de validators y de controllers.
Eso sera en el siguiente post :)

No hay comentarios:

Publicar un comentario