当前位置: 首页 > 工具软件 > rspec-mocks > 使用案例 >

rspec实践一(从零开始)

魏康安
2023-12-01

关于利用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是方法级的。

 

 

 

待续

 

 

 

 类似资料: