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