Spec-Zone.ru › Ruby on Rails 8.1

class ActiveSupport::TestCase

Подключённые модули:
ActiveSupport::Testing::Assertions, ActiveSupport::Testing::ErrorReporterAssertions, ActiveSupport::Testing::EventReporterAssertions, ActiveSupport::Testing::NotificationAssertions, ActiveSupport::Testing::Deprecation, ActiveSupport::Testing::ConstantStubbing, ActiveSupport::Testing::TimeHelpers, ActiveSupport::Testing::FileFixtures

Константы

Assertion

Открытые методы класса

fixture_paths () Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 176
      

Возвращает коллекцию ActiveRecord::FixtureSet.

В файле test_helper.rb необходимо указать require "rails/test_help".

fixture_paths=(fixture_paths) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 182
    

Задаёт указанный путь к набору фикстур.

Также можно добавить несколько путей.

ActiveSupport::TestCase.fixture_paths << "component1/test/fixtures"

В файле test_helper.rb необходимо указать require "rails/test_help".

parallel_worker_id () Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 34
def parallel_worker_id
  @@parallel_worker_id
end

Возвращает идентификатор текущего параллельного рабочего процесса, если тесты выполняются параллельно; в противном случае возвращает nil.

ActiveSupport::TestCase.parallel_worker_id # => 2
parallelize (workers: :number_of_processors, with: :processes, threshold: ActiveSupport.test_parallelization_threshold, parallelize_databases: ActiveSupport.parallelize_test_databases) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 113
def parallelize(workers: :number_of_processors, with: :processes, threshold: ActiveSupport.test_parallelization_threshold, parallelize_databases: ActiveSupport.parallelize_test_databases)
  case
  when ENV["PARALLEL_WORKERS"]
    workers = ENV["PARALLEL_WORKERS"].to_i
  when workers == :number_of_processors
    workers = (Concurrent.available_processor_count || Concurrent.processor_count).floor
  end

  if with == :processes
    ActiveSupport.parallelize_test_databases = parallelize_databases
  end

  Minitest.parallel_executor = ActiveSupport::Testing::ParallelizeExecutor.new(size: workers, with: with, threshold: threshold)
end

Выполняет набор тестов параллельно.

Принимает аргумент workers, который задаёт количество создаваемых процессов. Для каждого процесса будет создана новая база данных с суффиксом, содержащим номер рабочего процесса.

test-database_0
test-database_1

Если задано значение ENV["PARALLEL_WORKERS"], аргумент workers будет проигнорирован и вместо него будет использована переменная окружения. Это полезно в средах CI и других средах, где может потребоваться больше рабочих процессов, чем при локальном тестировании.

Если количество рабочих процессов задано равным 1 или меньше, тесты не будут выполняться параллельно.

Если для workers задано значение :number_of_processors, количество рабочих процессов будет соответствовать фактическому числу ядер компьютера.

По умолчанию параллельное выполнение использует разветвление процессов. Чтобы вместо этого использовать потоки, передайте with: :threads методу parallelize. Обратите внимание: параллельное выполнение с использованием потоков не создаёт несколько баз данных и не работает с системными тестами.

parallelize(workers: :number_of_processors, with: :threads)

Параллельное выполнение с использованием потоков напрямую использует параллельный исполнитель minitest. Параллельное выполнение процессов использует сервер Ruby DRb.

Поскольку параллельное выполнение связано с накладными расходами, оно включается только в том случае, если количество запускаемых тестов превышает параметр threshold. Значение по умолчанию — 50; его можно настроить с помощью config.active_support.test_parallelization_threshold.

Если вы хотите отказаться от стандартного создания Rails отдельной базы данных для каждого процесса и реализовать это самостоятельно, задайте parallelize_databases или настройте параметр через config.active_support.parallelize_test_databases.

parallelize(workers: :number_of_processors, parallelize_databases: false)

Обратите внимание: при использовании одной базы данных несколькими процессами набор тестов может попасть в состояние взаимной блокировки.

parallelize_before_fork (&block) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 138
def parallelize_before_fork(&block)
  ActiveSupport::Testing::Parallelization.before_fork_hook(&block)
end

Хук, выполняемый перед разветвлением процессов при параллельном тестировании. С его помощью можно выполнить любые действия перед разветвлением процессов.

Добавьте следующий код в файл test_helper.rb:

class ActiveSupport::TestCase
  parallelize_before_fork do
    # run this before fork
  end
end
parallelize_setup (&block) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 155
def parallelize_setup(&block)
  ActiveSupport::Testing::Parallelization.after_fork_hook(&block)
end

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

Примечание: эта функция недоступна при параллельном выполнении с использованием потоков.

Добавьте следующий код в файл test_helper.rb:

class ActiveSupport::TestCase
  parallelize_setup do
    # create databases
  end
end
parallelize_teardown (&block) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 172
def parallelize_teardown(&block)
  ActiveSupport::Testing::Parallelization.run_cleanup_hook(&block)
end

Хук очистки для параллельного тестирования. Его можно использовать для удаления баз данных, если приложение использует несколько баз данных для чтения и записи, или для выполнения других действий очистки до завершения тестов. Он выполняется до закрытия разветвлённого процесса.

Примечание: эта функция недоступна при параллельном выполнении с использованием потоков.

Добавьте следующий код в файл test_helper.rb:

class ActiveSupport::TestCase
  parallelize_teardown do
    # drop databases
  end
end
test_order () Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 61
def test_order
  ActiveSupport.test_order ||= :random
end

Возвращает порядок запуска тестовых случаев.

ActiveSupport::TestCase.test_order # => :random

Возможные значения: :random, :parallel, :alpha, :sorted. По умолчанию используется :random.

test_order= (new_order) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 51
def test_order=(new_order)
  ActiveSupport.test_order = new_order
end

Задаёт порядок запуска тестовых случаев.

ActiveSupport::TestCase.test_order = :random # => :random

Допустимые значения:

  • :random (для запуска тестов в случайном порядке)

  • :parallel (для параллельного запуска тестов)

  • :sorted (для запуска тестов в алфавитном порядке по имени метода)

  • :alpha (эквивалентно :sorted)

Открытые методы экземпляра

assert_no_match(matcher, obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 294
    

Псевдоним для: refute_match

assert_not_empty(obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 217
    

Псевдоним для: refute_empty

assert_not_equal(exp, act, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 228
    

Псевдоним для: refute_equal

assert_not_in_delta(exp, act, delta = 0.001, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 239
    

Псевдоним для: refute_in_delta

assert_not_in_epsilon(a, b, epsilon = 0.001, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 250
    

Псевдоним для: refute_in_epsilon

assert_not_includes(collection, obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 261
    

Псевдоним для: refute_includes

assert_not_instance_of(cls, obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 272
    

Псевдоним для: refute_instance_of

assert_not_kind_of(cls, obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 283
    

Псевдоним для: refute_kind_of

assert_not_nil(obj, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 305
    

Псевдоним для: refute_nil

assert_not_operator(o1, op, o2 = UNDEFINED, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 316
    

Псевдоним для: refute_operator

assert_not_predicate(o1, op, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 327
    

Псевдоним для: refute_predicate

assert_not_respond_to(obj, meth, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 338
    

Псевдоним для: refute_respond_to

assert_not_same(exp, act, msg = nil) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 349
    

Псевдоним для: refute_same

parallel_worker_id () Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 199
def parallel_worker_id
  self.class.parallel_worker_id
end

Возвращает идентификатор текущего параллельного рабочего процесса, если тесты выполняются параллельно

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API