Часто, когда тест терпит неудачу, я трачу некоторое время, пытаясь выяснить, что вызвало его неудачу. Было бы полезно, если бы RSpec мог запускать отладчик Ruby при сбое теста, чтобы я мог немедленно проверить локальные переменные, чтобы выяснить причину.
Обходной путь, который я сейчас использую, выглядит примерно так:
# withing some test
debugger unless some_variable.nil?
expect(some_variable).to be_nil
Однако этот подход громоздкий, потому что я сначала жду, когда тест завершится ошибкой, затем добавляю строку отладчика, исправляю проблему, а затем должен удалить строку отладчика, тогда как я хочу, чтобы он работал больше как gdb
, у которого есть возможность запуска при попадании исключения, не требуя добавления в кодовую базу операторов debugger
.
Изменить: я пробовал Плимут. Он не работал достаточно надежно для меня. Кроме того, история разработки, похоже, указывает на то, что это не очень хорошо поддерживаемый камень, поэтому я бы не стал на него полагаться.
Обновление: я опробовал pry-rescue
и считаю, что это удобно. Тем не менее, я часто использую zeus, и мне было интересно, есть ли способ заставить его работать с pry-rescue
.