27 Sep Tips fundamentales al usar Rspec Capybara con Rails
Para empezar un pequeno ejemplo usando una prueba para un controlador en rails.
Codigo de nuestra prueba ubicado en el archivo spec/controller/payments_controller_spec.rb
require 'spec_helper'
describe PaymentsController do
describe "#create" do
context "when success" do
let(:params) do
{ amount_due: 100 }
end
specify do
post :create, params
expect(response).to be_success
end
end
context "when fails" do
let(:payment_errors)do
[ "Invalid amount",
"Unprocessable Payment",
"Transaction Failed"
]
end
let(:params) do
{ amount_due: 400 }
end
specify do
post :create, params
expect(response.status).to eq(422)
expect(response.body).to eq(payment_errors.to_json)
end
end
end
end
Codigo de app/controllers/payments_controller.rb
class PaymentsController < AuthenticatedController
respond_to :json
def create
@payment_errors = ["Invalid amount",
"Unprocessable Payment",
"Transaction Failed"
]
if params[:amount_due].to_i <= 200
render status: : ok, json: []
else
render status: :unprocessable_entity, json: @payment_errors
end
end
end
El : ok de be de ser :ok junto ya que lo puse asi por que aparece un emoticon al ponerlo junto como podemos observar
Lo que podemos observar en el ejemplo anterior es que por ejemplo estamos probando dos contextos en el caso de que el pago sea exitoso y en el caso de que el pago sea fallido y no pueda ser aprobado, tambien podemos observar que no ponemos el valor de params[:amount_due] en valor fijo por que si lo ponemos va a hacer que nuestra prueba solo entre a un contexto ya sea fallido o exitoso y una de nuestras pruebas fallara.
Mas adelante continuaremos con ejemplos muy sencillos para comenzar en el mundo del testing con rspec en rails.
No Comments