How do you run a single test/spec file in RSpec? – Dev

The best answers to the question “How do you run a single test/spec file in RSpec?” in the category Dev.

QUESTION:

I want to be able to run a single spec file’s tests — for the one file I’m editing, for example. rake spec executes all the specs. My project is not a Rails project, so rake spec:doc doesn’t work.

Don’t know if this matters, but here is my directory structure.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

ANSWER:

The raw invocation:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

Now figure out how to embed this into your editor.

ANSWER:

Or you can skip rake and use the ‘rspec’ command:

rspec path/to/spec/file.rb

In your case I think as long as your ./spec/db_spec.rb file includes the appropriate helpers, it should work fine.

If you’re using an older version of rspec it is:

spec path/to/spec/file.rb

ANSWER:

You can also use the actual text of the *e*xample test case with -e !

So for:

it "shows the plane arrival time"

you can use

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

no need for rake here.

ANSWER:

This question is an old one, but it shows up at the top of Google when searching for how to run a single test. I don’t know if it’s a recent addition, but to run a single test out of a spec you can do the following:

rspec path/to/spec:<line number>

where -line number- is a line number that contains part of your test. For example, if you had a spec like:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

Let’s say it’s saved in spec/models/foo_spec.rb. Then you would run:

rspec spec/models/foo_spec.rb:2

and it would just run that one spec. In fact, that number could be anything from 2 to 5.

Hope this helps!