Смущен "ответить на" 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 используется в контроллерах, но все равно ничего общего с теми, кого вы уже встречали.