2011-09-02 12 views
21

¿Cómo puedo publicar en un controlador diferente al que apunta el script de prueba?publicar en un controlador diferente en una prueba rspec

Ejemplo: en user_controller_spec.rb

it "should just post to users" do   
    post :create, @params # this goes to the users controller 
    end 

quiero hacer algo como:

it "should post to user and people to do some integration testing" do   
    post :create, @params # this goes to the users controller still 
    post 'people', :create, @params # this goes to the people controller 
    end 

PD: No quiero que el pepino configuración

Respuesta

28

especificaciones del controlador son envoltorios para pruebas funcionales de Rails, que no admiten múltiples solicitudes o controladores. Lo que quiere es una especificación de solicitud de RSpec (rieles 3) o una especificación de integración (rieles 2). Estas pruebas de integración envuelven Rails, que admite múltiples solicitudes con múltiples controladores (varias sesiones, incluso), pero funcionan de forma un poco diferente de las especificaciones del controlador. Tienes que usar la ruta completa (así que obtener new_thing_path), y no puedes colgar nada en el controlador (porque no hay un controlador antes de hacer una solicitud).

Ver http://relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec y http://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.html para obtener más información.

3

Hay una forma de asignar el valor de @controller antes del método de prueba de llamada. Ejemplo

def setup 

    @controller = UserController.New 

    do user stuff 

    @controller = ThisController.New 

    do test intented for this controller 
end 
+0

awesome! funciona muy bien para mi – Tilo

+0

Quería comprobar a qué controlador estaba conectado, esto ayudó un poco. –

Cuestiones relacionadas