2012-05-23 20 views
7

Tengo solo una pregunta simple, pero no pude encontrar ninguna respuesta.Rails - Prueba API JSON con pruebas funcionales

Mi Ruby on Rails 3.2.2 aplicación tiene una API JSON con una autenticación de sesión ideada.

Mi pregunta es: ¿Cómo puedo probar esta API con pruebas funcionales o de integración? ¿Hay alguna manera de manejar una sesión?

No tengo una interfaz, solo una API que puedo hacer GET. ENVIAR. PONER. y ELIMINAR con JSON Body.

¿Cuál es la mejor manera de probar este automatizado?

Ejemplo crear nuevo usuario

www.exmaple.com/users la POST

{ 
"user":{ 
    "email" : "[email protected]", 
    "password " : "mypass" 
    } 
} 

Respuesta

16

Es fácil de hacer con las pruebas funcionales. En un ejemplo de usuario Me gustaría ponerlos en spec/controllers/users_controller_spec.rb en Rspec:

require 'spec_helper' 

describe UsersController do 
    render_views # if you have RABL views 

    before do 
    @user_attributes = { email: "[email protected]", password: "mypass" } 
    end 

    describe "POST to create" do 

    it "should change the number of users" do 
     lambda do 
      post :create, user: @user_attributes 
     end.should change(User, :count).by(1) 
    end 

    it "should be successful" do 
     post :create, user: @user_attributes 
     response.should be_success 
    end 

    it "should set @user" do 
     post :create, user: @user_attributes 
     assigns(:user).email.should == @user_attributes[:email] 
    end 

    it "should return created user in json" do # depend on what you return in action 
     post :create, user: @user_attributes 
     body = JSON.parse(response.body) 
     body["email"].should == @user_attributes[:email] 
     end 
    end 

Obviamente, se puede optimizar especificaciones anteriores, pero esto debe empezar. Aclamaciones.

+1

¿Por qué me recomendaron usar rspec? ¿Qué es rspec y cuál es la diferencia rspec y las pruebas normales? – Lailo

+0

¿Qué quiere decir con "pruebas normales"? Simplemente me gusta Rspec para DSL conveniente y la verdad de los métodos de ayuda. ¿Qué estás usando actualmente? –

1

Puede usuario pepino (TDC) para probar tales casos, por ejemplo:

Feature: Successful login 
    In order to login 
    As a user 
    I want to use my super API 

    Scenario: List user 
    Given the system knows about the following user: 
     | email   | username | 
     | [email protected] | blabla | 
    When the user requests POST /users 
    Then the response should be JSON: 
    """ 
    [ 
     {"email": "[email protected]", "username": "blabla"} 
    ] 
    """ 

a continuación, sólo tiene que escribir sus pasos, donde pickle joya sería muy útil

Cuestiones relacionadas