TIL: Run single test in the spec
This one is about Ruby, rspec
, and feedback loops.
When you work with Ruby code and rspec, you can run only single group (describe
/context
) or single test in the whole spec file.
First, you have to enable inclusion filtering, it’s disabled by default:
# spec_helper.rb
RSpec.configure do |c|
c.filter_run_when_matching :focus
# c.treat_symbols_as_metadata_keys_with_true_values = true
end
Then mark single test (or group) in huge spec file with focus: true
:
# spec/some_class_spec.rb
describe SomeClass do
describe '#method' do
context 'when one'
context 'when two'
context 'when three', focus: true
end
end
After that rspec spec/some_class_spec.rb
will run only when three
test, and that speeds up feedback loop a lot.
Or if you set c.treat_symbols_as_metadata_keys_with_true_values
to true
, you could add just symbol:
# spec/some_class_spec.rb
describe SomeClass do
describe '#method' do
context 'when one'
context 'when two'
context 'when three', :focus
end
end
or just prefix f
to methods describe
, context
, it
:
# spec/some_class_spec.rb
describe SomeClass do
describe '#method' do
context 'when one'
context 'when two'
fcontext 'when three'
end
end