How to run a single test from a Rails test suite?

Viewed 101947

How can I run a single test from a Rails test suite?

rake test ANYTHING seems to not help.

14 Answers

Thanks to @James, the answer seems to be:

rails test test/models/my_model.rb:22

Assuming 22 is the line number of the given test. According to rails help:

 $ rails test --help

You can run a single test by appending a line number to a filename:

    bin/rails test test/models/user_test.rb:27

Also, please note that your test should inherit from ActionDispatch::IntegrationTest for this to work (That was my mistake):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

In my situation for rake only works TESTOPTS="-n='/your_test_name/'":

bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/your_test_name/'"

To re-run a test that just failed, copy-n-paste the failed test name into

rails test -n [test-name]

EXAMPLE

When your test suite reports this:

> rails test
   ...
   Error:
   PlayersControllerTest#test_should_show_player:
   ActionView::Template::Error: no implicit conversion from nil to integer

you rerun the failing test with this:

rails test -n PlayersControllerTest#test_should_show_player

If rake is running MiniTest, the option is --name instead of -n.

rake test TEST=test/unit/progress_test.rb TESTOPTS="--name=testCreate"

First, access the folder of the lib you want to test(this is important) and then run:

~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb 

Rails folder

  bundle install
  bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb 

Note you need to load appropriate folder: "activerecord/test" (where you have test)

Related