2011-07-27 15 views
1

我是新来的RSpec和使用我controllers're inherited_resources控制器,我有这样的模拟/存根设置,如:错误的模型存根测试时使用哪些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来获取所有资源,谢谢! –

相关问题