Единичный беговой рельс / функциональный тест

Как название.

ruby test / functionals / Anytest.rb не работает, поэтому мне нужно заменить все require 'test_helper' на require File.dirname(__FILE__) + '/../test_helper'. По какой-то причине у большинства этих тестовых шаблонов есть такая проблема, поэтому я предпочитаю посмотреть, есть ли хак, который я могу обойти.

Возможный дубликат Как запустить одиночный тест из набора тестов rails?

krubo 18.11.2018 19:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
30
1
11 203
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

В Linux? почему бы не попробовать (cd test && ruby functionals/whatevertest.rb). Обратите внимание: круглые скобки важны, так как в противном случае ваш текущий каталог изменится на подкаталог. Он делает fork другой оболочкой, переходит в ее подкаталог и запускает тест.

этот подходит. Я немного изменил его на (cd test && rubyfunction / whatsoevertest.rb), чтобы он правильно работал с относительной структурой каталогов. Имеет смысл :)

William Yeung 08.11.2008 10:58

Попробуй это:

ruby -Ilib: тестовый тест / функционалы / whattest.rb

На самом деле я запускаю его с помощью: ruby ​​-I test test /function / anytest.rb, но в итоге получается то же самое.

Daemin 18.01.2010 18:30

Ответ на заглавный вопрос будет таким:

ruby unit/post_test.rb -n selected_test # use to run only one selected test

но на основной вопрос tvanfosson дал хороший ответ.

Я получил следующую ошибку: <internal:lib/rubygems/custom_require>:29:in require ': нет такого файла для загрузки - test_helper (LoadError) `Работает ли он с функциональным тестом?

B Seven 06.10.2011 20:37

Следующий ответ основан на: Как запустить одиночный тест из набора тестов rails? (stackoverflow)

Но очень кратко, вот ответ:

ruby -I test test/functional/whatevertest.rb

Для теста специфическийfunctional запустите:

ruby -I test test/functional/whatevertest.rb -n test_should_get_index

Просто поставьте подчеркивание в местах пробелов в именах тестов (как указано выше) или процитируйте заголовок следующим образом:

ruby -I test test/functional/whatevertest.rb -n 'test should get index'

Обратите внимание, что для тестов unit просто замените functional на unit в приведенных выше примерах. И если вы используете упаковщик для управления зависимостями гемов вашего приложения, вам придется выполнять тесты с bundle exec следующим образом:

bundle exec ruby -I test test/unit/specific_model_test.rb
bundle exec ruby -I test test/unit/specific_model_test.rb -n test_divide_by_zero
bundle exec ruby -I test test/unit/specific_model_test.rb -n 'test divide by zero'

Самое главное, обратите внимание, что аргумент переключателя -n - название теста и слово "тест" перед ним с пробелами или подчеркиванием в зависимости от того, цитируете ли вы имя или нет. Причина в том, что test - удобный метод. Следующие два метода - эквивалент:

test "should get high" do
  assert true
end

def test_should_get_high
  assert true
end

... и может выполняться как либо из следующих (это эквивалент):

bundle exec ruby -I test test/integration/misc_test.rb -n 'test should get high'
bundle exec ruby -I test test/integration/misc_test.rb -n test_should_get_high

Спасибо, что было полезно. Стандартный каталог: test / function / вместо test / functionals /, поэтому я отредактировал ваш ответ. Спасибо

vdaubry 24.01.2012 11:35

Ой .. спасибо за редактирование! Я, должно быть, по ошибке подсунул туда s, потому что иногда я выполняю только функциональные тесты через bundle exec rake test:functionals, что во множественном числе. Примечание: то же самое для запуска всех модульных тестов ... просто замените functionals на units.

user664833 24.01.2012 20:45

@BSeven Какую версию Ruby вы используете с Rails 3.0.7?

user664833 05.09.2012 21:26

@BSe Даже что конкретно из того, что вы пробовали, не работает (вы сказали "это")? Я предполагаю, что вы пробовали все, что описано выше, и в этом случае вам следует попробовать -n test_the_name_of_your_test, где test_the_name_of_your_test - это «имя вашего теста» с test_ перед ним (и подчеркивания вместо пробелов). Например, -n test_should_create_item.

user664833 06.09.2012 03:20

@ user664833 - «Это» - это ruby -I test test/functional/whatevertest.rb -n selected_test и ruby -I test test/functional/whatevertest.rb -n 'selected test w long name'. Подготовка test_ не помогла. Во всех трех случаях на выходе будет «0 тестов, 0 утверждений, 0 сбоев, 0 ошибок».

B Seven 06.09.2012 06:32

Я только что установил rails 3.0.7 и создал новое «депо» приложение (rails new depot), cd depot, bundle install (для установки sqlite3), rails g scaffold User name:string, bundle exec rake db:migrate, RAILS_ENV=test bundle exec rake db:migrate, а затем я провел следующие тесты с ruby 1.9.2p290, и все они работали: ruby -I test test/unit/user_test.rb и ruby -I test test/unit/user_test.rb -n test_the_truth и ruby -I test test/unit/user_test.rb -n 'test_the_truth'. Настоящее название теста - «правда». Кроме того, я нахожусь в корневой каталог приложения.

user664833 06.09.2012 10:59

@ user664833 - Хорошо, я прошел через этот процесс, и все 3 команды сработали. Я предполагаю, что есть что-то с моими драгоценными камнями или исправлением обезьяны в моем другом проекте, что нарушает эту функциональность. Это сработало и для функционального теста. Важно знать, что перед названием теста должно стоять test: test_the_truth.

B Seven 15.09.2012 23:48

@BSeven Я обновил ответ, чтобы отразить это. Извините, что ввел в заблуждение.

user664833 01.11.2012 01:59

наиболее распространенный метод для 2 и 3:

ruby -I test test / функционал / your_test_file.rb

Потратив на это бесконечные часы, я наконец нашел решение (в Rails 3.0.7):

ruby -I test test/functional/users_controller_test.rb -n "/the_test_name/"

Обратите внимание: это работает только с подчеркиванием (_) в команде. Не работает с пробелами!

Определите тест с пробелами как:

test "the test name" do

В этом решении используется сопоставление с образцом, поэтому вы можете использовать часть имени теста. Если тестом является «должен делать foo», то подойдет любой из следующих вариантов.

ruby -I test test/functional/alerts_controller_test.rb -n "/foo/"
ruby -I test test/functional/alerts_controller_test.rb -n "/do_foo/"

Следующее (с пробелами) не будет работать:

ruby -I test test/functional/alerts_controller_test.rb -n "/do foo/"

Я обнаружил, что если вы избежите "пробела" в шаблоне, это сработает. Примерно так работает: ruby ​​-I test test / my_test.rb -n "/ do \ foo /"

Oto Brglez 10.04.2014 15:27

почему-то оставив пробелы у меня сработало, я ruby -v ruby 1.9.3p484 и >> Rails::version => "2.3.18"

SuckerForMayhem 27.06.2014 20:00

Если вы используете Rails 4, то rake поддерживает аргументы файла / каталога. Пример:

rake test test/unit/user_test.rb
rake test test/unit

Другие вопросы по теме