对rspec的“才知道”

对rspec没有系统的学习,所以总是“才知道”!

才知道

config/environments/test.rb文件中有两行代码很重要

  # The test environment is used exclusively to run your application's
  # test suite. You never need to work with it otherwise. Remember that
  # your test database is "scratch space" for the test suite and is wiped
  # and recreated between test runs. Don't rely on the data there!
  config.cache_classes = true

默认为true,每测完一个example,自动清空数据库。当设置为false的时候,测试时不会自动清空测试数据库数据,我吃过这个亏,测试不通过,

总是报Record ValidatesXXXX already used之类的错误提示。

  # Do not eager load code on boot. This avoids loading your whole application
  # just for the purpose of running a single test. If you are using a tool that
  # preloads Rails for running tests, you may have to set it to true.
  config.eager_load = true

默认是false,测试时不会自动重新载入代码,尤其在使用一些辅助测试的工具时,特别有关系。

我用的spork,当时修改了一个model的约束关系,测试时愣是过不去,看来看去,没想到是spork的问题,当时config.eager_load是默认值false,

于是重启spork后,就ok了,如果把config.eager_load设置为true,就无需重启了。

对rspec很多的语法还不知道怎么用,就知道点浅薄的。

这里有个rspec rails 3.0的介绍https://www.relishapp.com/rspec/rspec-rails/v/3-0/docs

才知道

factories.rb  中定义  companyadmin 和  identity0

  factory :companyadmin, class: User do
    userID      "admin"
    username    "admin"
    password    "123456"
    password_confirmation "123456"
    email "[email protected]"
    company_id 1
    identity_id 2
  end
  factory :identity0, class: Identity do
    no 0
    identity "系统管理员"
  end

测试时写

let(:companyadmin) { FactoryGirl.create(:companyadmin) }

这句在测试数据中,只算上是new了一个User对象,并没有执行save,此时数据库中并不会新增一条记录

let(:identity0) { FactoryGirl.create(:identity0) }

这一句也就相当于  Identity.new  ,但是我的测试中需要系统管理员身份 这一条存在于测试数据库的数据,

存在了,测试才能通过,于是我在before 里加了一句

before { identity0.save }

才知道

”before do    end“ 或者 ”before {    }" 中的代码块会多次执行,对应的后面有几个example,就执行几次,而且,每次执行完,都会清空测试数据库

,就是测完一个example,接着就清空测试数据库,然后测下一个example。

对rspec的“才知道”,布布扣,bubuko.com

时间: 2024-10-08 05:45:56

对rspec的“才知道”的相关文章

逻辑思维训练550题

前序:思维训练让你更高.更强!更新时间2010-1-14 17:19:45 字数:1249 当今时代是一个知识爆炸的时代,也是一个头脑竞争的时代:在竞争日益激烈的环境下,一个人想要很好地生存,不仅需要付出勤奋,而且还必须具有智慧.随着人才竞争的日趋激烈和高智能化,越来越多的人认识到只拥有知识是远远不够的.因为知识本身并不能告诉我们如何去运用知识,如何去解决问题,如何去创新,而这一切都要靠人的智慧--大脑思维来解决.认真观察周围的人我们也会发现,那些在社会上有所成就的人无不是具有卓越思维能力的人.

RSpec入门指南

如何来描述(describe)你的method 首先要清楚你要描述的是什么类型的方法.用 Ruby 文档的一个惯例举例,提到类方法时使用.(或者::),提到实例方法的时候用#来描述. #BAD describe 'the authenticate method for user' do describe 'if the user is an admin' do #GOOD describe '.authenticate'  dodescribe '#admin?' do 使用上下文环境conte

移动互联网评论NO.1:移动互联网的大时代才刚开始

在2016年11月的第三届乌镇世界互联网大会上,百度李彦宏很令人惊讶的下了这样一个判断:移动互联网时代已经结束.而相应的依据是市场已经进入了一个相对平稳的发展阶段,互联网人口渗透率已经超过了50%.但事实上恰恰相反,正因为互联网人口渗透率已经超过了50%,这说明移动互联网的大时代才刚刚开始. 移动互联网:由量变逼近质变 11月16日,就在第三届乌镇世界互联网大会召开的同时,腾讯发布了2016第三季财报,其中QQ 智能终端月活跃账户达到 6.47 亿.微信和 WeChat 的合并月活跃账户数达到

初笋科技:天阔资本穆延飞:只有你擅长的才是真正的风口

初笋科技:天阔资本穆延飞:只有你擅长的才是真正的风口 这个已过了不惑之年的西北汉子,军人出身的他和现在的资本家------天阔资本首席执行官,似乎八竿子打不到一块儿.但是,在投资市场上的战绩却历历在目.算起来,天阔资本是从06年开始,在投资行业涉入的时间还是比较早,一开始主要是实体投资,主要与政府间用BOT合作,今年还斥资9800万做了一个BOT项目.而互联网的投资主要在大热的时候开始,是从14年开始,就做到了新三板.也许,多年的军队行政管理,专业技术,机关参谋多岗位工作经历,养就了穆延飞对待投

让你提前认识软件开发(46):首先是为人编写程序,其次才是计算机

第3部分 软件研发工作总结 首先是为人编写程序,其次才是计算机 "首先是为人编写程序,其次才是计算机",这是软件开发的基本要点,软件的生命周期贯穿于产品的开发.测试.生产.发布.用户使用.版本升级和后期维护等长期过程中,只有易读.易维护的软件代码才具有生命力. 在实际的软件开发过程中,可能是由于工作很忙的原因,很多开发人员只注重实现程序的基本功能,而忘记了编程规范,因此写出来的代码只能让计算机看懂,人要看懂很不容易.更有甚者,有些项目组为了赶进度,明确要求组员以实现产品功能为主,代码能

大志非才不就,大才非学不成

零.苦逼码农的自我修养系列 PS:为什么此部分序号是零而不是一?因为这是作为一个码农所应该具有的基础之中的基础,要想做个好码农,此部分还得花大力气啃书啊,这决定了我们看待计算机程序的高度. 0.1 数据结构与算法学习总结系列 (1)你必须知道的指针基础系列: { 预备篇 gcc开发环境搭建 } { 指针的声明和使用.数组与指针的关系 } { 指针的移动.指针的危险 } { sizeof计算长度.strcpy的安全性问题 } { 应用篇 自己实现strlen函数,endsWith函数 } { 内存

聪明的老板才不招工资低的程序员

前阵子写了一篇<如果两个程序员差不多,选写作能力更好的那个>,就有读者留言说:"老板,不都是选工资更低的那个么?".其实,这是另一个维度上的看法,正好最近也和一些经常招程序员的负责人们聊起过这个话题,顺着这个思路,不知不觉就想了很多. 人头值几何 早年刚毕业,找了一份工作.虽然不是外包公司,但由于承接的都是国有大型金融企业的项目,所以谈项目合同金额时,基本都是按这个项目大约需要多少人,投入多久,每个人的成本来计算的. 那时,甲方给的单人报价大约在 2.5 万,而我当时税前工

月攒亿级热度才上榜,科普、资讯内容成4月秒拍榜单黑马

依靠近20亿次播放量,魔力TV实现了在MCN榜上的蝉联:6亿播放的二更视频重回原创榜首:一手video竟然压过了央视新闻.人民日报.澎湃新闻等一众王牌媒体,成为风云榜上的状元--5月2日,秒拍发布2017年4月份系列榜单上,呈现出一个极其强烈的内容创业趋势-- 一个月没个亿级的热度,都不好意思在榜单上去排队. 文/张书乐 TMT行业观察者.游戏产业时评人,人民网.人民邮电报专栏作者 热度.画风.话锋--怎样的内容最有眼球 纵观风云榜.美食榜.时尚榜.影响力榜.原创榜和MCN榜6大榜单,有一个印象

未来,什么样的程序员才是不可替代的?

一个足球评论员可能并不会踢足球,却并不妨碍在解说比赛时对某某球星的技艺评头论足.同样我也绝不敢以高明的程序员自居,而只是以类似足球评论员的角度来阐述我对程序员的理解.这样,大家也许就不以我为鄙薄狂妄了.这是我必须首先声明的. 什么是程序员按照Wikipedia的定义,程序员又称为计算机程序员(Computer Programmer).开发者(Developer).编码者(Coder)或计算机工程师(Computer Engineer),和网络上广泛流传的码农或程序猿同义.我无意于也不能够为程序员