Как запустить один тест из набора тестов рельсов?

Как запустить один тест из набора тестов rails?

rake test ANYTHING кажется, не помогает.

Ответ 1

ПРИМЕЧАНИЕ. Это не запускает тест через rake. Таким образом, любой код, который у вас есть в Rakefile, НЕ будет выполнен.

Чтобы запустить один тест, используйте следующую команду в главном каталоге проекта rails:

ruby -I test test/unit/my_model_test.rb -n test_name

Это запускает один тест с именем "имя", определенный в классе MyModelTest в указанном файле. Имя test_ формируется путем ввода тестового имени, добавляя его к слову "тест", а затем разделяя слова с символами подчеркивания. Например:

class MyModelTest < ActiveSupport::TestCase

  test "valid with good attributes" do
    # do whatever you do
  end

  test "invalid with bad attributes" do
    # do whatever you do
  end
end

Вы можете запустить оба теста с помощью:

ruby -I test test/unit/my_model_test.rb

и только второй тест через

ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes

Ответ 2

Запустите тестовый файл :

rake test TEST=tests/functional/accounts_test.rb

Запустите одиночный тест в тестовом файле:

rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"

(Из комментария @Puhlze.)

Ответ 3

Для рельсов 5:

rails test test/models/my_model.rb

Ответ 4

Спасибо @James, ответ кажется:

rails test test/models/my_model.rb:22

Предполагая, что 22 - номер строки данного теста. По рекомендации rails:

 $ rails test --help

Вы можете запустить один тест, добавив номер строки в имя файла:

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

Также обратите внимание, что ваш тест должен наследовать от ActionDispatch:: IntegrationTest, чтобы это работало (это была моя ошибка):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

Ответ 5

В рельсах 5,

Я использовал этот способ для запуска одного тестового файла (все тесты в одном файле)

rails test -n /TopicsControllerTest/ -v

посмотреть здесь fooobar.com/questions/29266/...

Ответ 6

Для запуска одного теста в реальном наборе Rails:

bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb

Ответ 7

Это был глупый полуночный вопрос. Rails любезно печатает команду, выполняемую с помощью rake test. Остальное - упражнение для вырезания и вставки.

~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"

Ответ 8

Если вы хотите запустить один тест, вы можете просто запустить их как обычный Ruby script

ruby actionmailer/test/mail_layout_test.rb

Вы также можете запустить целый набор (например, ActiveRecord или ActionMailer) с помощью cd -ing в каталог и запустить rake test внутри.

Ответ 10

Сначала перейдите в папку библиотеки, которую вы хотите протестировать (это важно), а затем запустите:

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

Ответ 11

В моей ситуации для rake работает только TESTOPTS="-n='/sample/'":

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