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