我試圖visit '/requests/new
。現在在控制器代碼中,我寫了它,以便如果會話不存在,用戶將重定向回主頁。像這樣:Rspec /水豚模擬會話(存根或模擬?)
def new
@pagetitle = "What would you like to borrow?"
if session[:signup_email].nil?
flash[:danger] = "Please enter your email to get started"
redirect_to root_path
else
@signup_parent = Signup.find_by_email(session[:signup_email].downcase)
if @signup_parent.tos != true || @signup_parent.streetone.blank? || @signup_parent.streettwo.blank? || @signup_parent.zipcode.blank?
flash[:danger] = "Almost there! We just need a little more info"
redirect_to edit_signup_path
else
@requestrecord = @signup_parent.requests.build
end
end
末
但問題是,現在在測試中,我不能模擬會話。我試着寫:
before do
session[:signup_email] = Signup.find_by_id(@signup_ana.id)
visit '/requests/new'
save_and_open_page
fill_in '#borrow__1', :with => 1
click_button
end
但拋出一個錯誤:undefined local variable or method
會議」爲#`
然而,如果我不嘗試模擬它的save_and_open_page
顯示我,我只是得到重新路由回到家裏。我應該怎麼做?有沒有一種方法來存根/模擬此?
用戶如何獲得一個會話?這就是你如何做到的 - 你不會殘缺或嘲笑它。 – sevenseacat
用戶通過放入他/她的電子郵件來獲得會話,然後'session [:signup_email]'跟隨他們。是的,我知道我可以編寫測試來模仿這種實際行爲,但是當我必須編寫數百個測試時,我寧願看看是否有辦法說出會話應該是什麼,而不是訪問該頁面,填寫電子郵件,單擊按鈕等 – james