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。我可以編寫一堆糟糕的代碼來實現這個工作,但必須有一個很好的方法來做到這一點。