How do I run only specific tests in Rspec?

I think there's a way to run only tests with a given label. Anybody know?


It isn't easy to find the documentation, but you can tag examples with a hash. Eg.

# spec/my_spec.rb
describe SomeContext do
  it "won't run this" do
    raise "never reached"
  end

  it "will run this", :focus => true do
    1.should == 1
  end
end

$ 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.


In your spec_helper.rb:

RSpec.configure do |config|
    config.filter_run focus: true
    config.run_all_when_everything_filtered = true
end

and then on your specs:

it 'can do so and so', focus: true do
    # This is the only test that will run
end

You can also focus tests with 'fit' or exclude with 'xit', like so:

fit 'can do so and so' do
    # This is the only test that will run
end
链接地址: http://www.djcxy.com/p/59298.html

上一篇: 何时使用RSpec let()?

下一篇: 我如何在Rspec中只运行特定的测试?