[英]How to test controller actions that require a current session?
我在Padrino的admin部分添加了更多控制器,但無法鍛煉如何對當前用戶進行存根或與Factory Girl或Mocha進行會話。
測試需要當前會話的控制器操作的好方法是什么?
警告:我沒有使用過Padrino,並且您還沒有給出嘗試使用的任何代碼,因此這很籠統和模糊。
不要存根會話,而要使用像Capybara這樣的測試框架來為您設置一個cookie罐。 將RSpec shared_context與運行登錄的before
和after
塊一起使用。
我不記得Capybara的確切語法,我將讓您查找它,但這將是這樣的:
shared_context "When logged in" do
before do
visit "/login"
fill_in "username", user.name
fill_in "password", user.password
click "login!"
end
after do
# log out…
end
end
describe "Something that you need to be logged in for" do
let(:user) { OpenStruct.new({name: "blah", password: "blurgh" }) }
include "When logged in"
before do
visit "/only/authenticated/see/this"
end
subject { page }
it { should be_ok }
it { #… }
end
使用Rack::Test
,看看這個答案
這是身份驗證幫助器 ,因此您應該對logged_in?
存根logged_in?
返回true
和current_account
以返回用戶雙倍值(無論是來自FactoryGirl還是let
或任何地方)。 這樣,您的應用就不會從會話中索取信息。
此解決方案似乎有效
def set_current_user(user)
ApplicationController.stub(:current_user).and_return(user)
session[:identity_id] = user.id
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.