How do I run only specific tests in Rspec?
It isn't easy to find the documentation, but you can tag examples with a hash. Eg.
# spec/my_spec.rbdescribe SomeContext do it "won't run this" do raise "never reached" end it "will run this", :focus => true do 1.should == 1 endend$ rspec --tag focus spec/my_spec.rb
More info on GitHub. (anyone with a better link, please advise)
(update)
RSpec is now superbly documented here. See the --tag option section for details.
As of v2.6 this kind of tag can be expressed even more simply by including the configuration option treat_symbols_as_metadata_keys_with_true_values
, which allows you to do:
describe "Awesome feature", :awesome do
where :awesome
is treated as if it were :awesome => true
.
Also see this answer for how to configure RSpec to automatically run 'focused' tests. This works especially well with Guard.
You can run all tests that contain a specific string with --example (or -e) option:
rspec spec/models/user_spec.rb -e "User is admin"
I use that one the most.
Make sure RSpec is configured in your spec_helper.rb
to pay attention to focus
:
RSpec.configure do |config| config.filter_run focus: true config.run_all_when_everything_filtered = trueend
Then in your specs, add focus: true
as an argument:
it 'can do so and so', focus: true do # This is the only test that will runend
You can also focus tests by changing it
to fit
(or exclude tests with xit
), like so:
fit 'can do so and so' do # This is the only test that will runend