Jak uruchomić pojedynczy test z zestawu testów rails?

Jak mogę uruchomić pojedynczy test z zestawu testów rails?

rake test ANYTHING wygląda na to, że to nie pomaga.

Author: Jon Schneider, 2009-10-02

10 answers

UWAGA: to nie uruchamia testu przez rake. Więc żaden kod, który masz w Rakefile nie zostanie wykonany.

Aby uruchomić pojedynczy test, użyj następującego polecenia z katalogu głównego projektu rails:

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

Uruchamia pojedynczy test o nazwie "name", zdefiniowany w klasie MyModelTest w podanym pliku. Nazwa testu jest tworzona przez przyjęcie nazwy testu, poprzedzając ją słowem "test", a następnie oddzielając słowa podkreślnikami. Na przykład:

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

Możesz uruchomić oba testy poprzez:

ruby -I test test/unit/my_model_test.rb

I tylko drugi test przez

ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
 125
Author: Darryl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-18 15:35:52

Uruchom plik testowy :

rake test TEST=tests/functional/accounts_test.rb

Uruchom pojedynczy test w pliku testowym:

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

(z komentarza @ Puhlze.)

 57
Author: laffuste,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-11 05:24:29

Dla rails 5:

rails test test/models/my_model.rb
 20
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-28 14:38:26

Dzięki @ James, odpowiedź wydaje się być:

rails test test/models/my_model.rb:22

Zakładając, że 22 jest numerem linii danego testu. Według rails help:

 $ rails test --help

Możesz uruchomić pojedynczy test, dodając numer linii do nazwy pliku:

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

Pamiętaj również, że twój test powinien dziedziczyć z ActionDispatch:: IntegrationTest, aby to zadziałało (to był mój błąd):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
 14
Author: Roozbeh Zabihollahi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-30 00:53:36

In rails 5,

Użyłem tego sposobu, aby uruchomić pojedynczy plik testowy (wszystkie testy w jednym pliku)

rails test -n /TopicsControllerTest/ -v

Spójrz tutaj https://stackoverflow.com/a/41183694/3626659

 7
Author: Alupotha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:30

Aby uruchomić pojedynczy test w rzeczywistym pakiecie Rails:

bundle exec ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
 5
Author: Brian Rose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-20 20:15:51

To było głupie pytanie o północy. Rails wyświetla polecenie, które wykonuje rake test. Reszta to ćwiczenie wycinania i wklejania.

~/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"
 3
Author: artemave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-03 15:19:15

Jeśli chcesz uruchomić pojedynczy test, możesz po prostu uruchomić je jako zwykły skrypt Ruby

ruby actionmailer/test/mail_layout_test.rb

Można również uruchomić cały pakiet (np. ActiveRecord lub ActionMailer) przez cd-wejście do katalogu i uruchomienie rake test w nim.

 1
Author: Aupajo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-01 22:27:23

Najlepszym sposobem jest spojrzenie bezpośrednio w Przewodniki: 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
Author: Diego Plentz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-27 21:26:44

Najpierw uzyskaj dostęp do folderu lib, który chcesz przetestować(jest to ważne), a następnie uruchom:

~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb 
 0
Author: Diego Plentz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 19:05:56