RSpec Core

RSpec Core provides the structure for writing executable examples of how your
code should behave.

build status

Documentation

The Cucumber features are the
most comprehensive and up-to-date docs for end-users.

The RDoc provides
additional information for contributors and/or extenders.

All of the documentation is open source and a work in progress. If you find it
lacking or confusing, you can help improve it by submitting requests and
patches to the rspec-core issue
tracker
.

Install

gem install rspec # for rspec-core, rspec-expectations, rspec-mocks
gem install rspec-core # for rspec-core only

Upgrading from rspec-1.x

See features/Upgrade.md

This will install the rspec, rspec-core, rspec-expectations and rspec-mocks
gems.

Get Started

Start with a simple example of behavior you expect from your system. Do
this before you write any implementation code:

# in spec/calculator_spec.rb
describe Calculator, “add” do
it “returns the sum of its arguments” do
Calculator.new.add(1, 2).should eq(3)
end
end

Run this with the rspec command, and watch it fail:

$ rspec spec/calculator_spec.rb
./spec/calculator_spec.rb:1: uninitialized constant Calculator

Implement the simplest solution:

# in lib/calculator.rb
class Calculator
def add(a,b)
a + b
end
end

Be sure to require the implementation file in the spec:

# in spec/calculator_spec.rb
# - RSpec adds ./lib to the $LOAD_PATH, so you can
# just require “calculator” directly
require “calculator”

Now run the spec again, and watch it pass:

$ rspec spec/calculator_spec.rb
.

Finished in 0.000315 seconds
1 example, 0 failures

Use the documentation formatter to see the resulting spec:

$ rspec spec/calculator_spec.rb –format doc
Calculator add
returns the sum of its arguments

Finished in 0.000379 seconds
1 example, 0 failures

Known issues

See http://github.com/rspec/rspec-core/issues

Learn more

While not comprehensive yet, you can learn quite a lot from the Cucumber
features in the features
directory
. If there
is a feature that is not documented there, or you find them insufficient to
understand how to use a feature, please submit issues to
http://github.com/rspec/rspec-core/issues.

Contribute

See http://github.com/rspec/rspec-dev

Also see