Olá RSpec

Olá RSpec

2018, Apr 11    

O RSpec é um framework de testes escrito em Ruby que segue BDD(Behavior Driven Development),nos códigos a seguir vou mostrar o RSpec no Rails.

Instalando

Para usar o RSpec basta instalar a gem:

gem install rspec

ou em seu projeto rails adicione as seguintes linhas:

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

Após instalado a gem basta executar o seguinte comando no terminal:

rspec --init

Após a executar o comando serão adicionados ao projeto a pasta spec e o arquivo spec_helper.rb neste arquivo podemos realizar algumas configurações do rspec, vamos falar mais sobre em um outro post.

Além dos arquivos citados anteriormente ganhamos alguns novos generators: models,job,feature etc, veja aqui.

Usando o RSpec

Então temos nosso model Item com uma validação:

class Item < ApplicationRecord  
  validates :name, :quantity, presence: true
end

E nosso teste onde queremos fazer dois testes:

  • Verificar se o campo name está preenchido.
  • Mostrar uma mensagem caso não esteja.
  • Estamos usando a gem FactoryBot.
	  
require  'rails_helper'  
      
RSpec.describe Item, type: :model  do  
    let(:item){FactoryBot.create :item}  
    it "Create a Item with all fields fill"  do  
    	 expect(item.valid?).to be_truthy  
    end  
     
    
    it "Create a Item without a name"  do  
        item.name =  ""  
        expect(item.valid?).to be_falsey  
    end  
end

Então vamos por partes e mostrar o que significa cada comando em nosso teste:

  • RSpec.describe Item, type: :model do: Nesta linha estamos mostrando para o RSpec qual classe queremos testar e qual é tipo desta classe podem ser model,controller etc.
  • Context: O contexto do nosso teste separando assim nossos testes por funcionalidade.
  • It: É usado para descrever o cenário que estamos testando.
  • Expect: Resultado esperado do teste, pode ser tanto um resultado positivo quando negativo.

Executando Testes

Para executar os testes basta executar o seguinte comando:

rake spec

Como nossos teste são bem simples todos vão passar sem problemas então o resultado é :

...................
Finished in 1.5 seconds (files took 5.56 seconds to load)
2 examples, 0 failures

Por enquanto é só isso, nos vemos na próxima.