我在看《Agile Web Development with rails》这本书第二版的单元测试这一章,其中在functional test这一部分,rails提供了一些模拟浏览器请求的get,post等方法,其支持参数格式例如:
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过去啊?
分享到:
- 2007-02-12 22:54
- 浏览 5314
- 评论(6)
- 论坛回复 / 浏览 (6 / 5703)
- 查看更多
相关推荐
"Bug的分级和流程处理说明" ...Open a new bug by Test(Change Status to ”Open”) Special Bug (Difficult to resolve) Confirm by Group Will fix? Y Update Bug(Change Resolution to ”Postponed”) N
{Domain}/{Controller}/{Action} 数据形式 QueryString: ?name=zhangsan&age=22 Form Cookie Session Header HttpRequest HttpRequest 是⽤户请求对象 提供获取请求数据的属性 Cookies,Headers,Query,QueryString,...
test2Tytest2 = ( " meh " := 10 ) :: testtest2Ty = proof search去掉 test3 : ?test3Tytest3 = getProof $ " meh " - testtest3Ty = proof search更新 test4 : ?test4Tytest4 = getProof $ ( " meh " := 11 ) -: ...
### 如何撰写 Xilinx 的 Testbench #### 一、引言 在数字系统设计领域,尤其是采用FPGA作为实现平台时,验证所设计模块的正确性至关重要。Testbench是一种用于测试设计实体(如FPGA模块)的软件脚本,它可以产生...
TestController.java
Bugfree的核心功能包括缺陷管理、测试用例(Test Case)管理和测试结果(Test Result)管理。在Bugfree 2中,它进一步集成了Test Case和Test Result的管理,使得测试流程更加顺畅。 **一、BugFree系统简介** 1. **...
在Java Web开发中,Session是服务器端用于保持用户状态的一种机制。当用户通过登录界面验证后,服务器会创建一个Session对象,并将用户的登录信息(如用户名、用户ID等)存储在这个Session中。这样,每当用户在网站...
1:User table rows stored in session (浏览器缓存中缓存了过多的信息): 目前不修改, application=>storage==>session stroage 2: File Upload Related bug (上传文件把不相关的后缀文件上传): ??? 3:...
Thoughtful Machine Learning with Python: A Test-Driven Approach English | 25 Aug. 2016 | ISBN: 1491924136 | 250 Pages | AZW3/MOBI/EPUB/PDF (conv) | 16.77 MB By teaching you how to code machine-...
Mongo Session Store是基于MongoDB数据库实现的会话存储解决方案,主要应用于Node.js环境中,用于管理和持久化Web应用程序的用户会话。在JavaScript编程语言中,MongoDB Session Store提供了一个中间件,使得开发者...
- 使用test1用户登录BugFree,然后创建新的BUG。在创建时,要填写详细信息,并指派给developer1。同时,可以填写“创建BUILD”项,指定版本名,保存后,BUG信息将通过邮件发送给developer1。 7. **处理BUG**: - ...
本文将深入探讨“Bug的生命周期”这一主题,特别是在TD(Test Director,一种测试管理工具)中的应用。 首先,我们要理解Bug生命周期的基本概念。一个Bug从被发现到最终解决,通常会经历以下几个阶段: 1. **新建...
how to use the HPC test@node69:~> bjobs -aw JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME 818 test RUN QS_Norm node69 4*node10 mpirun.lsf /public/software/dock6-openmpi/bin/dock6.mpi ...
start.bat,直接访问http://localhost:8081/test ---http://localhost:8082/test----可直接发现session 相同,具体session有效期以server中默认30分钟,设置后在redis -->pttl key 查看session有效期.返回为毫秒数
表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu"则代表相对与WEB应用的路径。如...
Thinkphp3.2.3是一个流行的PHP MVC(Model-View-Controller)框架,它简化了Web应用的开发过程。然而,框架的便利性也可能带来安全漏洞,因此,开发者需要对其工作原理有深入的理解。 1. **SQL注入**:在处理用户...