- 当我们有这样的需求:一个或者更多的类 拥有同样的行为, 那么可以使用Rspec的 可分享的实例组(a shared example group). 关键词是
shared_examples_for 和 it_should_behave_like
- shared_examples_for "Any Pizza" do
- it "should taste really good" do
- @pizza.should taste_really_good
- end
- it "should be available by the slice" do
- @pizza.should be_available_by_the_slice
- end
- end
- describe "New York style thin crust pizza" do
- it_should_behave_like "Any Pizza"
- before(:each) do
- @pizza = Pizza.new(:region => 'New York' , :style => 'thin crust' )
- end
- it "should have a really great sauce" do
- @pizza.should have_a_really_great_sauce
- end
- end
或者使用 share_as
- share_as :AnyPizza do
- ...
- end
- describe "New York style thin crust pizza" do
- include AnyPizza
- ...
- end
或者直接使用 module ? 应该也可以
- 几种常见的断言
- lambda {
- account.withdraw 75, :dollars
- }.should raise_error(InsufficientFundsError)
- lambda {
- User.create!(:role => "admin" )
- }.should change{ User.admins.count }.from(0).to(1)
- 设置rspec rake 任务
- Spec::Rake::SpecTask.new do |t|
- t.spec_opts = ["--color" ]
- end
.rspec
- --color
- 一些基本的断言语句
http://www.letrails.cn/archives/11-02-advanced-rspec-tutorials-basics/
- 下面是RSpec测试的一些基础语法,这些都是会运行通过的测试例:
- Strings:
- 'foo'.should == 'foo'
- 'foo'.should === 'foo'
- 'foo'.should_not equal('foo')
- ''.should be_empty
- 'foo with bar'.should include('with')
- 'http://fr.ivolo.us'.should match(/http:\/\/.+/i)
- nil.should be_nil
- Numbers:
- 100.should < 200
- 200.should >= 100
- (200 - 100).should == 100
- # (100 - 80) is less than 21
- 100.should be_close(80,21)
- Arrays:
- [1,2,3].should have(3).items
- [].should be_empty
- [1,2,3].should include(2)
- Hashes:
- {}.should be_empty
- {:post => {:title => 'test'}}.should have_key(:post)
- {:post => {:title => 'test'}}.should_not have_key(:title)
- false.should be_false
- true.should be_true
- Records:
- # assuming @post = Post.new(:title => 'test')
- @post.should be_instance_of(Post)
- @post.should respond_to(:title)
- BDD 几篇特别好的文章分析
http://www.taobaotesting.com/blogs/qa?bid=11663
Rspec笔记
最新推荐文章于 2020-09-23 12:53:55 发布