Entendendo o rspec – Parte 1

Olá Pessoal.

Recentemente peguei um job onde o desenvolvedor que iniciou o projeto trabalhava com testes com rspec. Então resolvi aproveitar a oportunidade para aprender um pouco mais sobre o assunto. Pesquisei bastante até entender seus conceitos.

Segundo a documentação do rspec, ele foi desenvolvido para compreender os aspectos do BDD(Behaviour Driven Development) algo como “Desenvolvimento voltado ao Comportamento” uma variação do TDD, desenvolvimento voltado a testes. Ambos Processos de desenvolvimento ágil. É por isso, que no rspec utilizam-se palavras como “Behaviour” ao invés de “Teste” e “Exemplo” ao invés de “Método”.

Pré requistos:

  • Ruby 1.8.4 ou maior
  • A última versão da gem RSpec (3.0.3)

Instale o rspec

 
   $ gem install rspec

Crie os Comportamentos Esperados.

Para seguir a risca os conceitos do BDD é necessário que você crie os comportamentos esperados antes de implementar de fato a lógica. Vamos ao exemplo:

Crie um arquivo carro_spec.rb inicialmente com:

   
   describe Carro do
   end

e execute o spec:

   
   $ spec carro_spec.rb

Provavelmente ele dara o seguinte retorno:

  ./carro_spec.rb:1: uninitialized constant Carro (NameError)

Pois ainda não declaramos a classe Carro. Sendo assim crie um arquivo chamado carro.rb com o conteudo:

    class Carro
       @is_on

        def initialize
    	   @is_on = false
        end

        def start
       	    @is_on = true
        end

	def on?
	    @is_on
	end
    end

E declare-o:

require 'carro'

    describe Carro do
        it ":expect be on to run" do
            carro = Carro.new
            expect(carro).to be_on(true)
        end
    end

E execute novamente:

$ spec carro_spec.rb -fdoc

Carro
  expect not be on
  expect be on to run

Finished in 0.022865 seconds

2 example, 0 failures

Acredito que seja auto explicativo. Você vai criando situações de comportomentos e após suas implementações para suprir os specs. Simples e eficiente.

Abração.

Comments are closed.