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