2011-07-27 7 views
1

私はinherited_resourcesを使用してRSpecの、私のcontrollers'reに新たなんだを使用してコントローラをテストするとき、私はのように、このモック/スタブを設定している:間違ったモデルスタブinherited_resources

describe MarketsController do 
    def mock_market(stubs={}) 
    @mock_market ||= mock_model(Market, stubs).as_null_object 
    end 

    describe "GET index" do 
    it "assigns all markets as @markets" do 
     Market.stub(:all){ [mock_market] } 
     get :index 

     assigns(:markets).should eql([mock_market]) 
    end 
    end 
end 

そして何もでありませんので、この仕様が失敗しました代理人(:市場)。私が追加した後:

class MarketsController 
    def index 
     @markets = Market.all 
    end 
end 

をそれは私がinherited_resourcesが市場インスタンスのすべてを取得するためにMarket.allを呼び出すので、Market.stub(スタブをバイパスしていないためだと思うので、渡します:すべて)インデックス私が上に追加したメソッドは明らかに冗長であり、全く存在してはいけないので、Market.allを明示的に呼び出さずに、テストを完了するために私の仕様で何をすべきですか?前もって感謝します!

答えて

1

コードを正しく読んでいる場合、inherited_resourcesは、最初にMarket.scopedを使用しようとします。だからscopedスコープはありますか?

+0

はい、これは私の問題を解決しました! Resource.scopedを使ってすべてのリソースを取得していることはわかりませんでした。ありがとう! –

関連する問題