Смущен "ответить на" vs " ответить?'
Я изучаю рельсы с railstutorial.org, и я смущен чем-то:
в эта глава автор говорит нам сделать некоторое тестирование в консоли с respond_to?
метод на объекте пользователя, и он работает нормально. Но позже, когда мы напишем тест для
3 ответов
Руби лечит ?
и !
как фактические символы в имени метода. respond_to
и respond_to?
разные. ?
указывает, что должны ответьте true или false (по соглашению; это не является требованием). В частности:
respond_to?
это Рубин метод для обнаружения, имеет ли класс определенный метод на нем. Например,
@user.respond_to?('eat_food')
вернет true, если User
класс имеет eat_food
метод.
respond_to
это рейлинги метод для ответа на определенные типы запросов. Например:
def index
@people = Person.find(:all)
respond_to do |format|
format.html
format.xml { render :xml => @people.to_xml }
end
end
однако, в железнодорожном сообщении, которое вы предоставили, вы видите RSpec метод should
взаимодействие с RSpec это respond_to
метод. Это не будет доступно в вашей консоли, если вы не запустите rails console test
.
respond_to?
является логической оценкой. The respond_to
используется (обычно) для определения отображаемой информации. подробнее здесь. The respond_to?
проверяет, существует ли метод, и возвращает true, если да, и false, если нет.
тест использует удобные помощники, чтобы быть более удобным для пользователя.
Ruby-это Ruby, поэтому используйте старый добрый respond_to?
будет работать, если вы называете это так:
@user.respond_to?(:encrypted_password).should be_true
есть еще respond_to
используется в контроллерах, но все равно ничего общего с теми, кого вы уже встречали.