献给初学者: 实现带有权限校验情况下的功能测试

Agile with rails 一书中详细的描述了如何进行测试,
但是在开发中,我们或许会遇到下面的情况:

用户必须登陆系统才能进行其他工作;
用户信息保存在 session 里;
登陆工作是在 单独的 controller里(如 LoginController).

这样的情况下, 当我们想对 SearchController 进行功能测试的时候,
会遇到没有权限访问action的情况.
但是我们又不能在 SearchContrller_test 里调用 LoginController_test,
那么如何处理呢?

以下是我的解决办法:

[code]
def setup
@controller = ReportController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new

test_user
end

def test_user

# 这个 @tom 是 fixtures 中的数据
@user = User.find(:first, :conditions=>['id=?', @tom.id])
assert_not_nil @user

end

def test_index

#权限校验的规则就是如果 session[:app_user] not null, 就说明登陆了
get :index,{}, :app_user=>@user

assert_response :success

end

[/code]

方法很简单,就是 在 get(post) 方法里,设置 session的数值.


如果还有更好的办法希望能共享出来, thanks!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值