sampope 6: Como escrever testes numa aplicação Rails?

Escrevendo testes numa aplicação Rails

Agora que já instalamos o RSpec e o Capybara, vamos escrever nosso primeiro teste!

O ideal é sempre começar pelo teste. Nós já quebramos esta regra quando fizemos nossa home, afinal ainda não tínhamos testes na nossa aplicação. Vamos corrigir isso agora e daqui para frente trabalhar com testes sempre!

1 - Crie o arquivo person_sees_home_spec.rb

Ele deve ser criado dentro do diretório spec/features. A parte final (_spec.rb) é a mais importante, afinal é esta informação que o RSpec vai usar para decidir se o arquivo é ou não um teste.

2 - Comece o código com o require para o rails_helper

Antes que o teste possa rodar, o Rails precisa montar e configurar o servidor e o ambiente. O teste em si também vai precisar saber as regras e configurações do seu escopo. Tudo isso é tratado pelo rails_helper ou pelos arquivos que ele carrega. Ao colocar o require no topo do nosso teste, nós nos certificamos de que tudo isso será levando em consideração.

# spec/features/person_sees_home_spec.rb

require 'rails_helper'

3 - Acrescente o bloco que nomeia a feature

Nosso teste precisa especificar a feature que será testada. É importante que a informação usada aqui seja descritiva da situação, pois quando este teste falhar, será ela que nos ajudará a identificar por onde começar nosso trabalho.

# spec/features/person_sees_home_spec.rb

require 'rails_helper'

feature 'person sees home' do
end

4 - Dentro do bloco feature, acrescente o bloco scenario

O bloco cenário é usado para simularmos os diversos possíveis casos e comportamentos. Num teste para uma plataforma de pagamento, por exemplo, devemos testar um pagamento realizado com sucesso e também devemos testar um pagamento com um cartão de crédito vencido, por exemplo.

Geralmente começamos pelo teste de sucesso, afinal é isso que precisamos primeiramente: Que a coisa funcione! Então, o nome do cenário é simplesmente 'sucessfully'.

# spec/features/person_sees_home_spec.rb

require 'rails_helper'

feature 'person sees home' do
  scenario 'sucessfully' do
  end
end

Agora que temos o arquivo criado e organizado, vamos de fato escrever o que o teste precisa fazer!

5 - Mande o teste visitar a home da aplicação

Se queremos testar nossa home, aquela que criamos antes, precisamos que nosso teste navegue até ela. Fazemos isso com os métodos visit e root_path.

O método visit é do Capybara. Ele instrui que queremos navegar para alguma URL.

root_path é do Rails mesmo. Ele gera a URL da raiz da aplicação, conforme configurada no arquivo config/routes.rb. Nós apontamos a nossa raiz à home, então root_path vai gerar uma URL que mostrará ela.

# spec/features/person_sees_home_spec.rb

require 'rails_helper'

feature 'person sees home' do
  scenario 'sucessfully' do
    visit root_path
  end
end

6 - Acrescente o comportamento esperado

Ao contrário das outras áreas das nossas vidas, quando escrevemos testes, precisamos criar expectativas! É assim que saberemos se nossa aplicação está, ou não, fazendo o que gostaríamos que ela fizesse.

Neste caso, estamos testando a nossa home e no momento temos muito pouco nela. Então, nossa expectativa pode ser simplesmente que a palavra "sampope", nome da aplicação, apareça lá. Fazemos isso com acrescentando a linha de código expect(page).to have_content 'sampope'.

# spec/features/person_sees_home_spec.rb

require 'rails_helper'

feature 'person sees home' do
  scenario 'sucessfully' do
    visit root_path
    expect(page).to have_content 'sampope'
  end
end

Pronto!

Nosso teste está completo. Para ter certeza, você pode rodar o comando rspec na sua tela de comando ou terminal. Verá que onde antes dizia 0 examples, agora vai dizer 1 example:

Nenhum comentário:

Postar um comentário

E depois que seu código funciona, o que mais ele pode fazer?

Conhecer um idioma e se comunicar bem nele são a mesma coisa? Nem sempre, né? Você pode saber vocabulário, gramática, e até gírias, mas se n...