age*_*eto 73 ruby-on-rails railstutorial.org
我正在使用railstutorial.org学习Rails,我对某些内容感到困惑:在本章中,作者告诉我们在控制台中使用respond_to?User对象上的方法进行一些测试,并且它可以正常工作.但是后来,当我们为:encrypted_password属性编写测试时,他使用了respond_to.
出于好奇,我respond_to在控制台中尝试了一个User对象,我得到一个错误,说该方法不存在.唉,如果我尝试使用respond_to?而不是编写测试respond_to,测试就不会运行.
有人可以解释我的区别,为什么测试只运行respond_to?
Tim*_*van 162
红宝石对待?,并!为实际字符的方法名.respond_to并且respond_to?是不同的.?表示这应该以true或false响应(按惯例;这不是必需的).特别:
respond_to?是一个Ruby方法,用于检测类是否具有特定的方法.例如,
@user.respond_to?('eat_food')
Run Code Online (Sandbox Code Playgroud)
如果User类有一个eat_food方法,它将返回true .
respond_to是一种用于响应特定请求类型的Rails方法.例如:
def index
@people = Person.find(:all)
respond_to do |format|
format.html
format.xml { render :xml => @people.to_xml }
end
end
Run Code Online (Sandbox Code Playgroud)
但是,在您提供的RailsTutorial链接中,您看到RSpec方法should与RSpec的respond_to方法交互.除非您运行,否则在您的控制台中将无法使用此功能rails console test.