Skip to content
/ Rspec Public

Testes unitários e integrados em Ruby on Rails com Rspec

Notifications You must be signed in to change notification settings

Daruedo/Rspec

Repository files navigation

README

Testando Ruby com Rspec

  • Criar primeiro teste
  • Rspec é um framework BDD
  • BDD não é obrigatório, mas boa pratica
  • Integrar o Rspec e o Ruby On Rails
  • Testar models
  • Ttestar controllers
  • Ttestar APIs

GEMS: Rails Rspec

Rodar testes: bundle exec rspec spec/models/user_spec.rb bundle exec rspec spec/models/weapon_spec.rb bundle exec rspec spec/requests/users_spec.rb bundle exec rspec spec/requests/enemies_spec.rb bundle exec rspec spec/requests/weapons_spec.rb

Iniciando: rspec --init

rspec spec/lib/hero_spec.rb

procurar por group :development, :test do gem 'rspec-rails', '~> 3.8' end

bundle install rails db:create rails generate rspec:install rails generate model user rails generate rspec:request User rails g migration add_name_kind_level_to_user nickname:string kind:integer level:integer rails db:migrate

rails g controller users index create --no--helper --no-assets --no-controller-specs --no-view-specs --skip-routes rails g controller enemies update destroy --no-helper --no-assets --no-controller-specs --no-view-specs --skip-routes rails g model enemy name:string power_base:integer power_step:integer level:integer kind:integer rails db:migrate rails generate rspec:request Enemy

gem install ffi


Desafio #2:

1. criar metodo/model weapon

name
description
power_base
    pontos de poder quando a arma esta no level 1, exp: 3000
power_step
    pontos de poder que aumentam a cada level, exp: 100
level
    level atual da arma (començando em 1)

rails g model weapon name:string power_base:integer power_step:integer level:integer rails db:migrate rails db:migrate RAILS_ENV=test

2. criar os metódos no model

current_power
    (power_base+((level-1)*power_step))
title
    "nome_da_arma #level_da_arma"

3. realizar os testes dos métodos usando as gems ffaker e factory bot

Teste unitario = pequenas unidades (funções, metodos, etc) Teste integração = varios componentes ao mesmo tempo (request, GET /home)

Desafio #3:

1. Criar um controller para as weapons com as seguintes actions

index (GET /weapons)
    devolve uma pagina com uma lista com os nomes, current_power's, titles e links para os detalhes das armas (pagina show)

create (POST /weapons)

delete (DELETE /weapons/:id)

show (GET /weapons/:id)
    devolve uma página com todos os detalhes de uma arma

2. Criar os seguintes testes

Para o index
    Verificar se os nomes estão sendo exibidos
    Verificar se os current_power's estão sendo exibidos
    Verificar se os titles estão sendo exibidos
    Verificar se os links  estão sendo exibidos corretamente

Para o create
    Verificar se está passando os parâmetros corretos a arma está sendo criada
    Verificar se estpa passando os parâmetros incorretos a arma não está sendo criada

Para o delete
    Verificar se passando o id correto a arma está sendo deletada

Para o show
    Verificar se todos os detalhes da arma estão presentes
        (name, description, level, power_base, power_step, current_power e title)

rails g controller weapon index create delete show --no-helper --no-assets --no-controller-specs --no-view-specs --skip-routes

Desafio #4:

1.Crie no controller enemies os seguintes métodos
index(GET /enemies)
show(GET /enemies/:id)
create(POST /enemies)

About

Testes unitários e integrados em Ruby on Rails com Rspec

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published