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を明示的に呼び出さずに、テストを完了するために私の仕様で何をすべきですか?前もって感謝します!
はい、これは私の問題を解決しました! Resource.scopedを使ってすべてのリソースを取得していることはわかりませんでした。ありがとう! –