Rspec筆記

  1.   當我們有這樣的需求:一個或者更多的類 擁有同樣的行爲, 那麼可以使用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 ? 應該也可以

  2. 幾種常見的斷言
    lambda {
    account.withdraw 75, :dollars
    }.should raise_error(InsufficientFundsError)
    

    lambda {
    User.create!(:role => "admin" )
    }.should change{ User.admins.count }.from(0).to(1)
    


  3. 設置rspec rake 任務
    Spec::Rake::SpecTask.new do |t|
    t.spec_opts = ["--color" ]
    end
    
    現在一般的做法是直接設置配置文件
    .rspec
    --color



  4. 一些基本的斷言語句
    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)

  5. BDD 幾篇特別好的文章分析
    http://www.taobaotesting.com/blogs/qa?bid=11663





發佈了198 篇原創文章 · 獲贊 8 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章