Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Rack::Test is a layer on top of Rack's MockRequest similar to Merb's RequestHelper
Ruby
branch: master

This branch is 10 commits behind brynary:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/rack
spec
.document
.gitignore
Gemfile
Gemfile.lock
History.txt
MIT-LICENSE.txt
README.rdoc
Rakefile
Thorfile
rack-test.gemspec

README.rdoc

Rack::Test

Description

Rack::Test is a small, simple testing API for Rack apps. It can be used on its own or as a reusable starting point for Web frameworks and testing libraries to build on. Most of its initial functionality is an extraction of Merb 1.0's request helpers feature.

Features

  • Maintains a cookie jar across requests

  • Easily follow redirects when desired

  • Set request headers to be used by all subsequent requests

  • Small footprint. Approximately 200 LOC

Examples

require "rack/test"

class HomepageTest < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    MyApp.new
  end

  def test_redirect_logged_in_users_to_dashboard
    authorize "bryan", "secret"
    get "/"
    follow_redirect!

    assert_equal "http://example.org/redirected", last_request.url
    assert last_response.ok?
  end

end

If you want to test one app in isolation, you just return that app as shown above. But if you want to test the entire app stack, including middlewares, cascades etc. you need to parse the app defined in config.ru.

OUTER_APP = Rack::Builder.parse_file('config.ru').first

class TestApp < Test::Unit::TestCase
  include Rack::Test::Methods

  def app
    OUTER_APP
  end

  def test_root
    get '/'
    assert last_response.ok?
  end
end

Install

To install the latest release as a gem:

sudo gem install rack-test

Or via Bundler:

gem "rack-test", require: "rack/test"

Authors

  • Maintained by Bryan Helmkamp

  • Contributions from Simon Rozet, Pat Nakajima and others

  • Much of the original code was extracted from Merb 1.0's request helper

License

Copyright © 2008-2009 Bryan Helmkamp, Engine Yard Inc. See MIT-LICENSE.txt in this directory.

Releasing

  • Ensure History.txt is up-to-date

  • Bump VERSION in lib/rack/test.rb

  • thor :release

Something went wrong with that request. Please try again.