Rails测试《十》不能错过的杂七杂八
今天来介绍一些杂七杂八的测试知识,但是它们是不能错过的。
首先来介绍一下常用的测试命令
rake test
运行包括单元测试、功能测试和集成测试在内的所有测试。
rake test:units
运行所有的单元测试。
rake test:functionals
运行所有的功能测试
rake test:integration
运行所有的集成测试。
rake test:recent
运行最近修改过的测试。
rake test:uncommited
运行所有未提交的测试。支持svn和git。
setup和teardown
在一个包含多个测试方法的测试类中,我们可能会包含一些在每个测试运行之前和之后都需要做的工作,都需要执行的一些代码。
比如说创建对象,清理对象之类的。集中在一起便于维护,便于修改,便于阅读。
这样的事情我们可以交给setup和teardown来做。setup就是中的代码在每个测试方法执行之前运行,teardown中的代码会在每个测试方法执行之后运行。
这里我们拿之前做过的一个针对Admin::TagsController的功能测试举例,引入setup和teardown。添加tag是需要登录的,会用到用户信息,需要session中有值,这部分在Admin::TagsController的所有action中都是需要的,而且使用相同就可以了,把这部分放在setup和teardown正合适。
- require 'test_helper'
- class Admin::TagsControllerTest < ActionController::TestCase
- include FactoryGirl::Syntax::Methods
- def setup
- @user_valid = create(:user_valid)
- @request.session[:user_id] = @user_valid.id
- end
- def teardown
- @user_valid = nil
- end
- def test_should_create_tag_successfully
- tag = build(:tag_valid)
- assert_difference "Tag.count" do
- post :create, {:tag => { :title => tag.title}}
- end
- end
- def test_should_create_tag_fail
- assert_no_difference "Tag.count" do
- post :create, {:tag => { :title => ""}}
- end
- end
- end
而且rails还把setup和teardown实现为callback,这样你就可以通过下面的方式来指定setup和teardown。
- a block
- a method
- a method name as a symbol
- a lambda
- setup :init
- teardown do
- @user_valid = nil
- end
- private
- def init
- @user_valid = create(:user_valid)
- @request.session[:user_id] = @user_valid.id
- end
测试routes
- assert_routing(
- "signout",
- {:controller =>"sessions", :action =>"destroy", :method => :delete}
- )
- def test_route_posts_id
- category = FactoryGirl.create(:category_valid)
- article = FactoryGirl.create(:post_valid)
- assert_routing("posts/#{article.id}", {:controller => "posts", :action => "show", :id => article.id.to_s })
- end
转载于:https://blog.51cto.com/virusswb/1079484
Rails测试《十》不能错过的杂七杂八相关推荐
- [测试十年]第一年要get哪些技能?
有一句话说,如果人生倒着走,人们会避免很多错误,成为了不起的人. 人的一生,25岁之前在上学读书,25-55/60岁在工作,有个著名理论将职业生涯分为三个十年,你去搜索"职场三个十年&quo ...
- Rails测试《一》fixtures简介
简介 每个rails应用都包括三个环境: 生产环境 开发环境 测试环境 我们的测试就是跑在测试环境,如果测试涉及数据库,会在测试数据库进行操作.这样不会对生产环境和开发环境的数据造成影响. 我们先使用 ...
- Rails测试《十一》添加邮件发送程序及测试邮件发送程序
讲到测试邮件发送程序,我们首先要让系统可以发送邮件.我们先来给系统添加发送邮件的功能. Action Mailer in Rails 3是一个不错的视频教程,大家可以参考. 还有就是http://gu ...
- Rails测试《二》单元测试unit test
单元测试 单元测试针对model,主要是测试model中的业务规则,测试model中的验证validates规则. 单元测试的文件存放在test/unit文件夹,针对user的model的单元测试文件 ...
- 测试十年的前辈工作心得与经验分享
前言 由于各种原因,大部分测试人员,最开始接触都是纯功能界面测试,随着工作年限,会接触到一些常用测试工具,比如抓包,数据库,linux等. 长江后浪推前浪,前浪死在沙滩上",曾经一句让人会心 ...
- 测鬼记(上)——测试(十二)
十二.测试 第二日醒来,文字按往日的作息时间到了培训室,还未到上班时间,里面也没有几个人.深秋已临,深圳的天气依然闷热,早上走几步路衣裳都被汗湿了. 文字喜欢上班前培训室里的那份难得的宁静,虽然偌大的 ...
- 新零售讲堂之十年前错过了电子商务,十年后凭什么还要错过新零售!...
伴随互联网的快速发展,电子商务的迅速崛起,传统行业纷纷走向落寞.部分纯粹的传统企业已经是举步维艰,众多传统企业老板开始对互联网有了新的认知和态度,从一开始的抵触到慢慢接受,但由于对互联网本质的认知不够 ...
- 程序员,你的逻辑思维有多强(一道推理题测试,不可错过)
要做一个程序员,逻辑思维能力是关键,写程序也是对该能力的一种锻炼,这里有一个测试题,你可以对自己现在的能力进行评诂.也希望大家回贴谈谈感受. 本题是柏林大学的一次考试题,要求在30分钟内做出,不过只有 ...
- [测试十年]搜狗测试第一年:责任心篇
前文回顾 小明已经入职一年多了,他先后从娜娜那里学会了细心.融入团队.主动反馈.主动学习.沟通方法等工作方法,这极大地帮助了小明,他已然从新人慢慢成长为独挡一面的顶梁柱,但是相比娜娜还是差那么一点,究 ...
最新文章
- 我的世界java8_《我的世界》java8 64服务器mod
- 百度人脸搜索的一次尝试(JAVA)
- (十五)WebGIS中平移功能的设计和实现
- uboot引导linux内核,u-boot启动内核的几种方式
- 这个是什么单机经典模式的引入
- golang搭建静态web服务器的实现方法
- mysql最多多少slave_MySQL5.7主从,单slave多master
- aria-hidden读屏
- SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
- [转帖]浪潮openstack的逆袭
- 百度坐标拾取html,百度地图API获取地址拾取坐标代码
- 跑语义分割程序时报错
- SpringBoot工程接入第三方支付渠道支付宝(C扫B支付)
- python flask上传Excel并把Excel的数据导入数据库
- pc端页面右侧滑动样式修改
- Unity UGUI中两点之间连线的通用实现
- 虚拟机(VMware Workstation Pro15)及系统(Windows10)安装
- 关于什么是大数据智能决策!摘自《大数据智能决策》自动化学报
- 淘宝 聚划算 整点免费 支付宝延时时间1秒
- 用计算机设计购物小票,商友星云系统软件票据和条码标签设计和打印
热门文章
- Lock(ReentrantLock)实现线程同步,线程安全
- 设计模式之单例模式8种实现方式,其五:懒汉式(线程不安全,同步代码块)
- java使用Post方式发送https请求的方法,直接可以用
- 对标Postman的ApiPost创始人:用户,是ApiPost唯一的信仰
- c语言if的时候自动转换,[求助]IF语句转换SWITCH语句写出!如何
- matlab cgf sc 未定义,matlab通用神經網絡代碼
- 【无标题】写博客的第一天
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅳ):数据聚合、重采样
- lisp钢管_技术专栏集合管道模式(上)
- python写数据库校验_Python:生成验证码并插入到数据库!