浏览 5710 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-12
get :action, {params}, {session}, {flash} 然后这本书第202页给出一个指定Session的例子为: def test_index_with_user get :index, {}, {:user_id => users(:dave).id} assert_equal(users(:dave).id, session[:user_id]) assert_response :success assert_template "index" end 但是实际跑这个测试,却发现程序无论如何拿不到session[:user_id],十分纳闷,在程序里面PP.pp session,发现TestSession对象的属性@attributes{:user_id => 1}已经有了,但是就是拿不出来,奇怪,实在奇怪。 无奈只得去趴rails的ActionController::TestSession的源代码,终于在test_processor.rb里面找到,第291行: def [](key) data[key.to_s] end def []=(key, value) data[key.to_s] = value end 嗯,用string做key,没有提供用symbol做key的取法,于是把上面测试代码中get这一行修改,原来是: get :index, {}, {:user_id => users(:dave).id} 现在改为: get :index, {}, {"user_id" => users(:dave).id} 测试程序顺利通过! 问题解决了,不过我不知道这算不算一个bug啊?大家说呢?我是不是应该提交一个issue过去啊? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-13
我也遇到了
|
|
返回顶楼 | |
发表时间:2007-02-13
这么调用比较少见,对session的赋值一般是写在setup里面的。或者通过调用登录的Controller来模拟登录。
|
|
返回顶楼 | |
发表时间:2007-02-13
dongbin 写道 这么调用比较少见,对session的赋值一般是写在setup里面的。或者通过调用登录的Controller来模拟登录。
那么如何在funciontal test的setup对session赋值呢? |
|
返回顶楼 | |
发表时间:2007-02-13
@request.session[:user_id]=users('bob').id |
|
返回顶楼 | |
发表时间:2007-04-23
以前对博主在论坛里的态度很不满意,不过看了这篇帖子,觉得博主确实有过人之处.
感谢博主提供了这么有价值的信息 !!! |
|
返回顶楼 | |
发表时间:2007-07-11
我也在这个问题上卡了很久
![]() |
|
返回顶楼 | |