docs ruby-on-rails ruby rspec rack-test

ruby-on-rails - docs - sinatra get



La prueba en bastidor falla: aún no hay respuesta para la solicitud JSON (1)

Intento crear una API JSON para mi proyecto Ruby siguiendo el ejemplo de Ticketee proporcionado en el libro de Yehuda Katz Rails 3 in Action , capítulo 13. Aquí hay una prueba RSpec descrita en la página 353 adaptada a mi entorno.

# /spec/api/v1/farms_spec.rb # Reduced to the minimum code. require "spec_helper" include ApiHelper # not sure if I need this describe "/api/v1/farms", type: :api do context "farms viewable by this user" do let(:url) { "/api/v1/farms" } it "json" do get "#{url}.json" assert last_response.ok? end end end

Cuando ejecuto la prueba obtengo el siguiente resultado ...

$ rspec spec/api/v1/farms_spec.rb No DRb server is running. Running in local process instead ... Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} 1) /api/v1/farms farms viewable by this user json Failure/Error: assert last_response.ok? Rack::Test::Error: No response yet. Request a page first. # ./spec/api/v1/farms_spec.rb:30:in `block (3 levels) in <top (required)>'' Finished in 2.29 seconds 1 example, 1 failure

Aquí está el módulo auxiliar que uso ...

# /support/api/helper.rb module ApiHelper include Rack::Test::Methods def app Rails.application end end RSpec.configure do |config| config.include ApiHelper, type: :api end

Nota : esta pregunta es similar a la prueba de respuestas REST-API con Rspec y Rack :: Test .


Rspec-rails parece ignorar el type: :api parámetro type: :api del bloque describir y trata todas las especificaciones en / spec / api como especificaciones de solicitud (consulte las especificaciones de solicitud de capítulo aquí) . ¿Tal vez el parámetro de tipo está en desuso? No he encontrado ninguna documentación aún.

Puedo hacer que tu ejemplo funcione cuando utilizo type: :request lugar de type: :api . También eliminé el método de la aplicación porque ya está incluido en RequestExampleGroup de manera predeterminada.

# /support/api/helper.rb module ApiHelper include Rack::Test::Methods end RSpec.configure do |config| config.include ApiHelper, type: :request end

Y la especificación:

#/spec/api/v1/farms_spec.rb require "spec_helper" describe "/api/v1/farms" do context "farms viewable by this user" do let(:url) { "/api/v1/farms" } it "json" do get "#{url}.json" assert last_response.ok? end end end