Смущает 'откликнуться' против ответить на?'
Я учусь рельсы с 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?
является логической оценкой. Элементrespond_to
используется (обычно) для определения отображаемой информации. подробнее здесь. Элементrespond_to?
проверяет, существует ли метод и возвращает true, если это так, и false, если это не так.
тест использует удобные помощники, чтобы быть более удобным для пользователя.
Рубин-это Рубин, поэтому используйте старый добрый
respond_to?
будет работать, если вы называете это так:@user.respond_to?(:encrypted_password).should be_true
есть еще
respond_to
используется в контроллерах, но еще не имеет ничего общего с тем, кого вы уже встречали.