2011-06-22 69 views
1

我使用Rspec在我的Controller規範中測試視圖的內容。我試圖測試所有Product條目在頁面上顯示的描述。針對內容的rspec測試

describe StoreController do 
    render_views 

    describe "GET 'index'" do 

    before(:each) do 
     get :index 
    end 

    it "should display the product list" do 
     Product.all.each do |product| 
     response.should have_selector("p", :content => product.description) 
     end 
    end 

    end 
end 

但是,這似乎並不奏效,因爲無論視圖中有什麼內容,測試都會通過。 Rails仍然很新,所以很可能我在這裏做了一些完全錯誤的事情。如何在StoreController索引視圖中對每個產品描述進行代碼測試?

回答

0

我想通了。問題是我的測試數據庫沒有填充任何Products,所以each塊永遠不會執行。通過使用Factory Girl來確定測試數據庫中是否有數據。

4

就我個人而言,我不會在控制器中測試視圖的內容。我只是測試控制器動作和任何支持方法的輸出輸出。我會將視圖相關測試放入視圖規範中。

如果你看看由rails生成的那些,你應該看到一些如何在那裏聲明內容的例子。

+0

我目前正在關注Michael Hartl的Rails教程中有關在您的控制器規範中測試您的視圖的建議,但我可能會嘗試接下來查看規範。 –

+1

他有一本書,一個教程和其他東西。我只得到了我,但我總是以我的測試爲基礎,儘可能地細化細節,MVC模型中已經定義了一個合理的分隔。但是,對於每個人自己:)只要你得到你的測試覆蓋率,這都是druthers的問題... – jaydel