Skip to content
This repository was archived by the owner on Nov 16, 2018. It is now read-only.

Sinatra

kalin edited this page Aug 13, 2010 · 33 revisions

Webrat

You can use Cucumber with Sinatra and Webrat!

Just make sure you have a features/support/env.rb file with the following:

# Sinatra
app_file = File.join(File.dirname(__FILE__), *%w[.. .. app.rb])
require app_file
# Force the application name because polyglot breaks the auto-detection logic.
Sinatra::Application.app_file = app_file

# RSpec matchers
require 'spec/expectations'

# Webrat
require 'webrat'
Webrat.configure do |config|
  config.mode = :sinatra
end

World do
  session = Webrat::SinatraSession.new
  session.extend(Webrat::Matchers)
  session.extend(Webrat::HaveTagMatcher)
  session
end

Sinatra/Test

You can also use Cucumber with Sinatra using Sinatra’s built-in testing setup and Test Harness_. Make sure you have something like the the following, tailored to Test::Unit, RSpec, Bacon or Test::Spec, in your features/support/env.rb.

require File.dirname(__FILE__) + "/../../your_sinatra_app"

# RSpec matchers
require 'spec/expectations'

# Required for RSpec to play nice with Sinatra/Test
require 'spec/interop/test'

# Sinatra/Test
require 'sinatra/test'

Test::Unit::TestCase.send :include, Sinatra::Test

World do
  Sinatra::TestHarness.new(Sinatra::Application)
end

Rack-Test

You can also use Cucumber with Sinatra using Bryan Helkamp’s rack-test and Webrat. You can check out the rspec examples in the hancock application. Something like the following should be setup in your features/support/env.rb.


require File.expand_path(File.dirname(__FILE__)+'/../../spec_helper')
require 'haml'

MyApp::App.set :environment, :development

World do
def app
@app = Rack::Builder.new do
run MyApp::App
end
end
include Rack::Test::Methods
include Webrat::Methods
include Webrat::Matchers
end

Clone this wiki locally