Как запустить один тест из набора тестов рельсов? - PullRequest
107 голосов
/ 02 октября 2009

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

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

Ответы [ 11 ]

136 голосов
/ 02 октября 2009

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

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

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

При этом запускается один тест с именем «name», определенный в классе MyModelTest в указанном файле. Test_name формируется путем взятия имени теста, добавляя его к слову «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
77 голосов
/ 13 апреля 2014

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

rake test TEST=tests/functional/accounts_test.rb

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

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

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

34 голосов
/ 28 июня 2016

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

rails test test/models/my_model.rb
23 голосов
/ 30 октября 2017

Благодаря @James, ответ выглядит так:

rails test test/models/my_model.rb:22

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

 $ rails test --help

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

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

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

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
9 голосов
/ 16 декабря 2016

В рельсах 5,

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

rails test -n /TopicsControllerTest/ -v

смотри здесь https://stackoverflow.com/a/41183694/3626659

5 голосов
/ 21 декабря 2011

Чтобы запустить один тест в реальном наборе Rails:

bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
3 голосов
/ 03 октября 2009

Это был мой глупый полуночный вопрос. 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"
1 голос
/ 06 февраля 2019

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

bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"
1 голос
/ 28 ноября 2016

Лучший способ - заглянуть прямо в направляющие: http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html#running-tests

cd actionmailer
bundle exec ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
1 голос
/ 02 октября 2009

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

ruby actionmailer/test/mail_layout_test.rb

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...