capybara2.0以后的requests测试变化

ruby rubyonrails it

     都说学编程就应该写技术Blog,这算是我第一个技术blog吧。

     最近用ruby2.0+rails4.0+latest Gem 重做ruby on rails tutorial,可谓是bug重重,第一个变化是attr_accessible被禁用,转为使用strong params。还好,这个问题遇到的人多,google一下就搞定了,但是今天遇到的capybara2.0gem的变化就头疼了,因为大多数人遇到这个麻烦都选择用旧的版本凑合吧,无论是google还是群里都问不出解决方法,只好自己摸索了。
       
       首先, capybara2.0以后的用户行为测试被放在了features文件夹,features跟requests的区别:
 http://stackoverflow.com/questions/15173946/rspec-what-is-the-difference-between-a-feature-and-a-request-spec

        但是,他们只说了功能如何分离,那ruby on rails tutorial里的测试该怎么改才能用呢?没说,下面说明我找到的方法:
 
1、按上面那篇文章的做法,把原本在requests文件夹里的测试文件都放到features里

2、凡是用到put\get\delete\post这些方法的测试,在requests里新建测试文件,放到这个文件里

3、以我的情况为例,在support/utilities.rb里定义的sign_in方法,原来是这样的:

def sign_in(user)
    visit signin_path
    fill_in "Email", with: user.email
    fill_in "Password", with: user.password
    click_button "Sign in"
    # Sign in when not using Capybara as well.
    cookies[:remember_token] = user.remember_token
end

       因为  visit 和 fill_in方法在requests里已经不能用了,我们需要新建一个方法requests_signin

def requests_signin(user)
    post sessions_path, email: user.email, password: user.password
end

     注意,这里的  sessions_path 会根据你的具体情况有所不同。想知道这里该用什么,需要在终端输入

$ bundle exec rake routes 

     我的显示是这样的:
      Prefix Verb        URI Pattern               Controller#Action
      users GET       /users(.:format)          users#index
            POST         /users(.:format)          users#create
   new_user GET    /users/new(.:format)      users#new
  edit_user GET     /users/:id/edit(.:format)   users#edit
       user GET       /users/:id(.:format)      users#show
            PATCH     /users/:id(.:format)      users#update
            PUT          /users/:id(.:format)      users#update
            DELETE   /users/:id(.:format)      users#destroy
       root GET        /                                    static_pages#home
   sessions POST   /sessions(.:format)       sessions#create
new_session GET    /sessions/new(.:format)   sessions#new
session DELETE     /sessions/:id(.:format)   sessions#destroy
     signup GET      /signup(.:format)         users#new
     signin GET       /signin(.:format)         sessions#new   
 signout DELETE   /signout(.:format)        sessions#destroy
       help GET         /help(.:format)           static_pages#help
      about GET      /about(.:format)          static_pages#about
    contact GET      /contact(.:format)        static_pages#contact

       因为我sign in的目的是创建sessions,而上传email和password验证时要用到POST方法,根据列出的路径,能用这个方法的是sessions,那么路径就是 sessions_path。

4、好了 ,这样我在测试里就能这样用了:

let(:user) { FactoryGirl.create(:user) }
before { requests_signin(user) }
 

相关推荐

  • 版本发布后软件测试人员要做的工作  摘自:http://www.51testing.com/html/85/n-831985.html版本发布后大部分测试人员的意识里面都会认为该要好好休息一下了,放几天羊,做做其它和已发布版本没有相关的事情。其实版本发布后测试人员还有很多事
  • DT-D导通测试仪 导通测试仪型号:DT-D名称:导通测试仪、接地引下线导通测试仪、接地导通测试仪标准:DLT475-2006、DLT596-1996说明:DT-D导通测试仪适用于电力设备接地引下线与接地网(或相邻设备)之间导通电阻值的测量,且同样适用于低阻值
  • 《探索式测试》读书笔记六 基于测程的测试管理-sbtm管理在测试团队中探索式测试的质量和进度,改方法将测试任务分解成一系列的测程,测试人员在测程中完成一个特定测试任务的设计,执行和记录。测程的特点:任务---任务简要描述测试对象,并建议可能的测试策略和潜在的产品缺陷
  • 服务端测试之接口测试初探 一、什么是接口测试先来看看接口测试的定义:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。如今的
  • EMC测试的标志 EMC实验室的租场测试的详细信息 EMC测试的标志EMC实验室的租场测试电磁兼容(EMC)是对电子产品在电磁场方面干扰大小(EMI)和抗干扰能力(EMS)的综合评定,是产品质量最重要的指标之一,电磁兼容的测量由测试场地和测试仪器组成。EMC包含两大项:EMI(干扰)和EMS
  • 其他测试类型 回归测试回归测试指的是软件功能修改后,对软件进行重新测试以确认没有引入新的错误或导致其他部分产生错误。回归测试的重心在关键模块和重点功能组件。​软件研发周期中会进行多次回归测试,且尽量实现自动化。​Monkey测试也
  • 微课教学实验设计———前测试卷测试 2015年12月21日《组合图形的面积》前测试卷测试为了使实验更具有效性,在实验教学开展之前,我们通过随堂测试的方式,对实验组和对照组进行前侧,试卷如下:《组合图形的面积》的前测试卷班级:姓名:我会做你还记得我们学过哪些图形,它们的面积是如
  • 如何提高测试用例设计的测试覆盖率   一、测试用例的切面设计  1、功能点切面  2、特定切面  3、隐含切面  (1)、后台功能  (2)、完整业务流程的测试  (3)、某种特定情况下的系统运行  (4)、其它相关系统  (5)、除功能测试外的其它测试类型  二、详细用例
  • 英国卫裤官方网测试,中国销售官方网测试   英国卫裤官方网测试,中国销售官方网测试-官方认证,厂家授权;官方正品,假一赔十>>>【点击进入英国卫裤官网了解更多】“英国卫裤”自从上市以来,几年内得到了广大消费者的追捧和青睐。英国卫裤良好的使用效果得到了众多男性朋友
  • 预测试卷 2014淘宝预测试卷推荐店铺最热销星火2014年大学英语六级/CET6级改革新题型试卷真题详解+标准预测(10套优化真题+5套模拟)历年透析及模拟试题翻译听力作文赠书振宇2014年6月最新版大学英语四级试卷(新题型英语四级改革模拟题预测试卷
  • 美国原装ACL-380表面电阻测试仪 ACL-380表面电阻测试仪希欧仪器现货 美国原装ACL-380表面电阻测试仪ACL-380表面电阻测试仪希欧仪器现货ACL-380表面电阻测试仪既可测量表面阻抗,又可测量对地电阻,量程范围广,从10的3次方欧姆/□到10的12次方欧姆/□,精度为±1/2量
  • 微博同步测试 微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试微博同步测试

你的评论

就没有什么想说的吗?

最新博客

关于我们 免责声明 移动版

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X