tutorial rails ruby-on-rails ajax testing rspec mocha

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.