«Printf» тестирование в Rails - PullRequest
       18

«Printf» тестирование в Rails

0 голосов
/ 11 февраля 2009

Я новичок в Rails и знаю, что в него встроены такие вещи, как модульное тестирование. Но я заинтересован в проведении более простых тестов, которые эквивалентны вашему "printf" в C. Так что я Я тестирую страницу входа, которую я написал, и хочу отследить код, чтобы увидеть, что возвращает каждая строка, например мои методы поиска. Я пытаюсь вывести с помощью «put», но ничего не получаю в командной строке.

Ответы [ 4 ]

10 голосов
/ 11 февраля 2009

Я использую операторы put все время, а также отладчик ruby! Это великолепно.

В рельсах вы можете сделать пару вещей. Я вставляю «put» в мой код, и когда я запускаю скрипт / сервер в командной строке, вывод появляется в моем Terminal.app. Я использую Mac, но я уверен, что есть аналогичный способ отследить активность вашего приложения на выбранной вами платформе.

Другой вариант - использовать инструкцию logger. Вы можете позвонить

logger.debug("My #{variable}")

и найдите эти утверждения прямо в файле log / development.log.

Кроме того, если вы работаете в системе * nix, вы можете использовать команду tail для отслеживания последнего оператора, записанного в ваш журнал по одному.

tail -f log/development.log

Таким образом, вы могли бы написать свои заявления и видеть их, как они происходят. Есть несколько уровней ведения журнала:

logger.warn
logger.info
logger.debug
logger.fatal

каждая среда (разработка, тестирование, производство) будет определять, какой «уровень» ведения журнала будет вызываться, так что вы можете писать операторы журнала произвольно с logger.debug во время разработки, но эти операторы журнала не будут записываться, когда вы развертываете на основе уровней журнала по умолчанию.

3 голосов
/ 11 февраля 2009

Пользователь что-то вроде этого:

logger.info "method called with #{params.inspect}"

(вы можете поместить любую переменную в # {})

Как только вы повеселитесь, посмотрите ./script/console и ruby-debug

1 голос
/ 11 февраля 2009

Вы знакомы с ruby-debug?

  1. Установите камень ruby-debug.
  2. Запустите ваш сервер с параметром -u.

    скрипт / сервер -u

  3. Поместите оператор debugger в свой код, где вы хотите остановиться.
  4. У вас будет консольный доступ к вашим переменным, а также возможность пошагово просматривать ваш код.

Обратитесь к документации ruby-debug для получения более подробной информации.

0 голосов
/ 11 февраля 2009

Я делал это раньше - с Passenger у вас нет вывода скрипта / сервера, поэтому я написал это:

# extras/sexy_logging.rb
module SexyLogging
  def log(text)
    return true if RAILS_ENV == 'production'

    string = "\e[0;32mLog:\e[m #{text}"

    (100 - string.length).times do 
      string << ' '
    end
    string << "(#{caller.first})"

    logger.debug string
  end
end

ActiveRecord::Base.send               :include, SexyLogging
ActionController::Base.send           :include, SexyLogging

Тогда вы можете написать

log variable

или

log 'Testing user'

tail -f log/development.log |grep Log:

и смотрите только то, что вы регистрируете, построчно и с цветами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...