2013-06-28 60 views
2

我有簡單的測試用例:(板的has_many鏈接,鏈接belongs_to的板)類方法,並期望參數

context "with feeds" do 
    let (:board) {FactoryGirl.create(:board_tree)} 

    it "returns links from all feeds" do 
    expect(board.all_links.count).to eq Link.all.count 
    end 
end 

它失敗(expected 8 got 2) - 這是確定的,我預料的一樣。

現在我關掉這個期待與:

expect(Link.all.count).to eq board.all_links.count

這一次,我認爲這將失敗,expected 2 got 8,而是它我得到:expected 2, got 0

任何想法爲什麼?對我而言,兩個期望應該是平等的。

回答

2

如果您嘗試改變:

let (:board) {FactoryGirl.create(:board_tree)} 

let! (:board) {FactoryGirl.create(:board_tree)} 

,你會看到,當您反轉條件的結果不會改變。問題在於鏈接是由rspec在第一次引用board變量時創建的,因此在第二個示例中,當rspec正在評估expect(Link.all.count)部分時,沒有鏈接。

+0

太棒了,只是意識到我昨天讀過它:)。謝謝。 –

相關問題