Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get Rspec to run all tests nested under a folder?

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

like image 334
Nathan Long Avatar asked Feb 20 '12 14:02

Nathan Long


People also ask

How do I run a RSpec test on a file?

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.

Does RSpec clean database?

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.


1 Answers

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)

like image 55
farnoy Avatar answered Sep 21 '22 16:09

farnoy