No commit activity in last 3 years
No release in over 3 years
You got Cucumber in my RSpec!
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 2.0.0.beta.19
 Project Readme

Unencumbered

You got Cucumber in my RSpec!

Write Cucumber-flavored integration tests as easily as you write your RSpec.

To Get Output Like This

Output from a rake spec:integration run:


User creates a vurl
  Scenario:  creating
    Given I am on the home page
      When I submit a valid vurl
        Then I should be on vurl stats page
        And I should see a success message
        And my vurl was successfully created

Make a Feature Like This

Put it in a spec file in the spec/integration folder. Here’s user_creates_vurl_spec.rb for example:


require File.expand_path('../../spec_helper', __FILE__)

Feature "User creates a vurl" do
  Scenario "creating" do
    Given "I am on the home page" do
      executes { visit root_path }

      When "I submit a valid vurl" do
        executes do
          fill_in "vurl_url", :with => 'http://example.com'
          click_button 'Vurlify!'
        end

        Then "I should be on the vurl stats page" do
          current_url.should == stats_url(Vurl.last.slug)
        end

        And "I should see a success message" do
          response.body.should include('Vurl was successfully created')
        end

        And "my vurl was created" do
          Vurl.last.url.should == 'http://example.com'
        end
      end
    end
  end
end

Set Up

Environment

Add this line to your config/environments/test.rb file. Make sure to use the :lib => false item. We need to require the library manually in the spec_helper.rb, since it patches RSpec.


config.gem "unencumbered", :lib => false, :version => 'x.x.x'

spec_helper.rb

Meld these lines into your existing spec/spec_helper.rb. Note the unencumbered require needs to be after your RSpec requires, since it patches RSpec.


require 'unencumbered'
require 'webrat'

Webrat.configure do |config|
  config.mode = :rails
end

Spec::Runner.configure do |config|

  [...your other config code...]

  config.include(Webrat::Matchers, :type => [:integration])
end

class ActionController::Integration::Session; include Spec::Matchers; end

spec.opts

RSpec’s nested format reads nicely. Put this line in your spec/spec.opts file.


--format nested

Copyright © 2009 Hashrocket. See LICENSE for details.