Spec-Zone.ru › Ruby on Rails 7.1

класс ActiveSupport::TestCase

Родитель:
Minitest::Test
Включенные модули:
ActiveSupport::Testing::Assertions, ActiveSupport::Testing::ErrorReporterAssertions, ActiveSupport::Testing::Deprecation, ActiveSupport::Testing::ConstantStubbing, ActiveSupport::Testing::TimeHelpers, ActiveSupport::Testing::FileFixtures

Константы

Assertion

Общедоступные методы класса

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

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

В вашем test_helper.rb должен быть require "rails/test_help".

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

Устанавливает заданный путь к набору фикстур.

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

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

В вашем test_helper.rb должен быть require "rails/test_help".

parallelize(workers: :number_of_processors, with: :processes, threshold: ActiveSupport.test_parallelization_threshold) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 80
def parallelize(workers: :number_of_processors, with: :processes, threshold: ActiveSupport.test_parallelization_threshold)
  workers = Concurrent.physical_processor_count if workers == :number_of_processors
  workers = ENV["PARALLEL_WORKERS"].to_i if ENV["PARALLEL_WORKERS"]

  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.

parallelize_setup(&block) Показать исходный код
# File activesupport/lib/active_support/test_case.rb, line 100
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 117
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 43
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 33
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 231
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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