модуль ActiveSupport::Testing::ConstantStubbing
Публичные методы экземпляра
# File activesupport/lib/active_support/testing/constant_stubbing.rb, line 21 def stub_const(mod, constant, new_value) old_value = mod.const_get(constant, false) mod.send(:remove_const, constant) mod.const_set(constant, new_value) yield ensure mod.send(:remove_const, constant) mod.const_set(constant, old_value) end
Изменяет значение константы на время выполнения блока. Пример:
# World::List::Import::LARGE_IMPORT_THRESHOLD = 5000 stub_const(World::List::Import, :LARGE_IMPORT_THRESHOLD, 1) do assert_equal 1, World::List::Import::LARGE_IMPORT_THRESHOLD end assert_equal 5000, World::List::Import::LARGE_IMPORT_THRESHOLD
Использование этого метода вместо принудительного World::List::Import::LARGE_IMPORT_THRESHOLD = 5000 предотвращает выброс предупреждений и гарантирует, что старое значение возвращается после завершения теста.
Примечание: Подстановка константы будет выполняться во всех потоках. Таким образом, если у вас есть конкурентные потоки (например, отдельные наборы тестов, выполняемые параллельно), которые все зависят от одной и той же константы, возможно, различные подстановки будут мешать друг другу.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.