ruby-on-rails - rspec rails tutorial
¿Cómo se prueba una solicitud AJAX con RSpec/RoR? (3)
Carriles 5
Desde Rails 5.0 (con RSpec 3.X), intente configurar xhr: true
así:
get :index, xhr: true
Fondo
Aquí está el código relevante en ActionController::TestCase . Establecer el indicador xhr
termina agregando los siguientes encabezados:
if xhr
@request.set_header "HTTP_X_REQUESTED_WITH", "XMLHttpRequest"
@request.fetch_header("HTTP_ACCEPT") do |k|
@request.set_header k, [Mime[:js], Mime[:html], Mime[:xml], "text/xml", "*/*"].join(", ")
end
end
Soy bastante nuevo en RoR y recientemente comencé a aprender BDD / Rspec para probar mi aplicación. He estado buscando una forma de especificar una solicitud AJAX, pero hasta ahora no he encontrado mucha documentación sobre esto en absoluto.
Alguien sabe cómo hacer esto? Estoy usando Rails 2.3.8, rspec 1.3.0 y mocha 0.9.8 para mis stubs (que también estoy en proceso de aprender ...)
La sintaxis cambió un poco para Rails 5 y rspec> 3.1 (creo)
para solicitudes POST:
post :create, xhr: true, params: { polls: { question: ''some'' } }
ahora necesitas parámetros explícitamente establecidos
para solicitudes GET:
get :action, xhr: true, params: { id: 10 }
para rieles 4 y rspec <= 3.1
xhr post :create, { polls: { question: ''some'' } }
Solicitudes GET:
xhr get :show, id: 10
Si está hablando de probarlo dentro de las especificaciones de su controlador, donde normalmente llama
get :index
para hacer una solicitud HTTP a la acción de índice, en su lugar llamarías
xhr :get, :index
para hacer una solicitud XmlHttpRequest (AJAX) a la acción de índice usando GET.