2011-06-22 14 views
1

Rspecを使用して、コントローラ仕様のビューの内容をテストしています。私はすべての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

個人的に私はコントローラのビューの内容をテストしません。私は、コントローラのアクションとサポート方法の出力をテストします。ビュー関連のテストをビューのスペックに入れてみました。

レールで生成されたものを見る場合は、そこにコンテンツをアサートする方法の例があります。

+0

私は現在、あなたのコントローラの仕様であなたのビューをテストすることに関するMichael Hartl's Railsのチュートリアルのアドバイスに従っていますが、次に表示仕様を試してみるかもしれません。 –

+1

彼は本、チュートリアルなどを持っています。私は私だけを持っていますが、細かい粒度を可能な限り細かく分割することを前提に、私はいつもテストに基づいています。MVCモデルでは、妥当な分離がすでに定義されています。しかし、それぞれ自分自身に:あなたがテストカバレッジを取得する限り、それはすべてのdruthersの問題です... – jaydel