I like to run my Rspec tests with Spork running in a separate tab. I usually run my tests using rspec spec
, by which I intend to say "search recursively and run everything in the spec
folder."
I've recently realized that this does not actually run all my tests. I now have a spec file in spec/requests
which isn't being run. I know this because I've edited one of the tests to raise an error, and run the following:
rspec spec
- no error raised.rspec spec/requests
- still no error raised, and 0 examples, 0 failures
!rspec spec/requests/my_controller.rb
- bingo. 17 examples, 1 failure
and the failure has my error message.Why isn't Rspec finding all my test files? Is this a matter of configuration, or do I need to use a different command to run my tests?
I need to run all my tests at once to ensure that I'm not introducing regressions.
(Not using Spork makes no difference, by the way.)
Running tests by their file or directory names is the most familiar way to run tests with RSpec. RSpec can take a file name or directory name and run the file or the contents of the directory. So you can do: rspec spec/jobs to run the tests found in the jobs directory.
I use the database_cleaner gem to scrub my test database before each test runs, ensuring a clean slate and stable baseline every time. By default, RSpec will actually do this for you, running every test with a database transaction and then rolling back that transaction after it finishes.
Rspec should already look recursively through the directory you named and find all tests. Note however, that it's looking for files ending in _spec.rb
. Maybe some of your files are not named correctly?
If you need to be more specific about which files it should find, you can also use the --pattern
option. For example: rspec --pattern spec/requests/*_spec.rb
. (Option --pattern
is equal to -P
. Taken from rspec --help
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With