Определение в сообщении блога является специфическим (метод setup (& block) определяется в модуле Thoughtbot :: Shoulda в context.rb. Shoulda.rb, затем TestCase расширяет этот модуль).
Определение для чистого теста :: единица:
# File test/unit/testcase.rb, line 100
def setup
end
что вы могли бы сделать
def setup
log_test
end
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
редактировать
если вы действительно не хотите редактировать свои файлы, вы можете рискнуть открыть тестовый кейс и вместо этого продлить выполнение:
class Test::Unit::TestCase
alias :old_run :run
def run
log_test
old_run
end
end
это должно работать (хотя у меня нет рубина для тестирования)
Я сдаюсь! (в отчаянии)
Я проверил код, и rails на самом деле творит чудеса за сценой, поэтому, вероятно, переопределение run не работает.
Дело в том, что частью волшебства является ActiveSupport :: CallBack и создание обратных вызовов для настройки и демонтажа.
что означает
class Test::Unit::TestCase
setup :log_test
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
end
end
определенно должно работать
и запуск тестов с ним действительно работает. я запутался в том, что это первое, что я попробовал, и он потерпел неудачу с той же ошибкой, которую вы получили