Rack::Test este o bibliotecă simplă și ușoară de testare pentru aplicațiile Ruby care utilizează protocolul Rack fără a porni un server HTTP.
Configurare de Bază (RSpec / Minitest)
require 'rack/test'
class AppTest < Minitest::Test
include Rack::Test::Methods
def app
MySinatraApp
end
def test_homepage
get '/'
assert last_response.ok?
assert_equal 'Hello World', last_response.body
end
end
Metode de Cerere HTTP
# Cerere GET cu parametri de interogare
get '/search', q: 'ruby'
# Cerere POST cu date de formular
post '/users', name: 'Alice', email: '[email protected]'
# PUT și DELETE
put '/users/1', status: 'active'
delete '/users/1'
# Încărcare fișier
post '/upload', file: Rack::Test::UploadedFile.new('spec/fixtures/avatar.png', 'image/png')
Inspectarea Răspunsurilor
last_response.status # => 200, 404, etc.
last_response.body # => Șirul corpului răspunsului
last_response.headers # => Hash al anteturilor de răspuns HTTP
last_response.ok? # => true dacă este 200..299
last_response.redirect? # => true dacă este 301, 302, 303, 307
last_response.location # => URL-ul destinației de redirecționare
Setarea Anteturilor și Autentificare
# Setează antet de cerere
header 'Accept', 'application/json'
# Autentificare de bază HTTP
authorize 'username', 'secretpassword'