3
我正在为移动页面编写集成测试。我已经设置了移动系统,如在Railscast中描述的那样。如果设备是移动设备,基本上会建立一个会话,如果设备不是移动设备,我的控制器会发送到桌面主页,但如果设备是移动设备,则发送到移动主页。 Rspec不支持会话,所以我不知道如何让集成文件知道它应该进入移动主页。在rspec集成测试中测试移动设备,但不能设置会话
在助手中定义的方法来检测是否移动。
def check_for_mobile
session[:mobile_override] = params[:mobile] if params[:mobile]
end
def mobile_device?
if session[:mobile_override]
session[:mobile_override] == "1"
else
(request.user_agent =~ /Mobile|webOS/) && (request.user_agent !~ /iPad/)
end
end
控制器动作
def home
check_for_mobile
if mobile_device?
@devise_mapping ||= Devise.mappings[:company]
render "pages/home_mobile"
elsif company_signed_in?
redirect_to companies_home_path
else
@request = Request.new
@request.company = params[:company]
render 'pages/landing'
end
end
我基本上需要得到mobile_device?
在要求规范返回true。我可以编写一堆糟糕的代码来实现这个工作,但必须有一个很好的方法来做到这一点。