Определение в сообщении в блоге, должен иметь конкретный (установка (& блок), метод определяется в модуле Thoughtbot:: Должен иметь в context.rb., должен have.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
это должно работать (у меня нет рубина вокруг для тестирования, хотя)
<час>я сдаюсь! (в разочаровании)
я проверил, что код и направляющие на самом деле делают волшебство позади сцены, которая является, вероятно, почему переопределение выполнения не работает.
вещь: часть волшебства включает 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
, должно определенно работать
, и на самом деле запущение тестов с ним действительно работает. то, где я смущен, - то, что это - первая вещь, которую я попробовал, и она перестала работать с той же ошибкой, которую Вы получили
Сетка
, pack
и место
] функции объекта Entry
и всех других виджетов возвращают None
. В python, когда вы выполняете a (). B ()
, результатом выражения будет то, что возвращает b ()
, поэтому Entry (...). Grid ( ...)
вернет Нет
.
Вы должны разделить это на две строки следующим образом:
entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)
Таким образом вы получите ссылку на Entry
, хранящуюся в entryBox
, и она будет размещена так, как вы ожидаете. У этого есть дополнительный побочный эффект, заключающийся в упрощении понимания и поддержки вашего макета, если вы собираете все операторы grid
и / или pack
в блоки.
Измените эту строку:
entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W)
на эти две строки:
entryBox=Entry(root,width=60)
entryBox.grid(row=2, column=1,sticky=W)
Точно так же, как вы уже правильно сделали для grabBtn
!