rspec实践一(从零开始)

关于利用rspec的文章感觉蛮少的,准备写一个简洁的rspec 实践心得,从零开始,一步步深入探索

 

顺便说几句关于BDD的看法,感觉这种开发方式还是很靠谱的,个人认为传统的TDD开发太乏味,让人感觉在浪费时间,而且,TDD开发出的东西,虽然功能上可以保证正确性,但站在产品的角度上,结果往往与客户的期望相去甚远,二者最大的不同是,BDD的目的是不仅仅在于检验结果的正确性,还有就是让测试用例描述需求成为可能,这样的话,写测试用例的过程可以让程序员逐步的了解需求,也就是明白自己到底需要做出什么样的产品

 

gem install rspec

gem install rspec-rails

 

 

rspec-rails是rspec的rails扩展库,作用无非是简化生成测试骨架以及运行测试用例

 

控制器

ruby script/generate rspec_controller dog bark fetch

后面跟的是试图文件的名字

 

模型

ruby script/generate rspec_model User

 

自动生成的代码如下

 

require 'spec_helper'

describe User do
  before(:each) do
    @valid_attributes = {
      :username => "sharp"
    }
  end

  it "should create a new instance given valid attributes" do
    User.create!(@valid_attributes)
  end
end
 

需要说明的是describe方法生成了Spec::Example::ExampleGroup的一个子类,it方法生成了should_×××××的方法,也就是describe方法生成了一个样例组,而通过it生成了一个个都样例。

 

Spec::Mock

在一个系统中,会有很多对象代理其他的对象,那么在测试这个对象的时候,如果它所需要代理的对象还没有开发出来,那么就需要模拟一些它所代理的对象。

Method stubs 和 messsage expectations 是方法级的概念,而 test doubles 或者 test-specific extensions则是对象级的概念。

test double是一种在样例中可以代表其他对象的对象,根据它的用法,类似于mocks, stubs, fakes  ,imposters等等,需要注意的是mock是对象级,而stub是方法级的。

 

 

 

待续

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值