I use guard-rspec to automatically run necessary rspec tests as my files changes, and I love how it works. However, when I'm debugging a file with multiple tests, sometimes I just want an individual test to be re-run. For example, with rspec from the command line:
rspec spec/requests/my_favorite_spec.rb:100
This will run only the single spec at line 100 in my_favorite_spec.rb
.
I tried inputting the above into the guard console, but it just ran all the tests as if I had just pressed enter. Is there another syntax in the guard console to run a single spec?
You have to argument your spec/spec_helper.rb
file to accept the :focus => true
statement.
RSpec.configure do |config|
config.filter_run :focus => true
end
Then you can use
it 'does something', :focus => true do
//your spec
end
or
describe "something", :focus => true do
before do
sign in
visit page
end
it { does something }
it { does something else }
end
If you are going to take that approach, you probably also want to ensure all specs are run if there is no :focus => true
anywhere, using the documented approach:
RSpec.configure do |config|
config.run_all_when_everything_filtered = true
end
You can do a lot with filters; you might want to have a look at this page: https://relishapp.com/rspec/rspec-core/v/3-0/docs/filtering