【发布时间】:2011-03-10 16:19:35
【问题描述】:
从 Rails 3 / Rspec 2 开始,我正在尝试利用控制器规范的 render_views 功能。我遇到的问题是我们刚刚安装了 kaminari 寻呼机 gem,我想从我的视图中删除 <%= paginate @sites %> 调用,所以我不必手动删除所有内部方法kaminari 定义了与paginate 助手一起使用的集合。
如果这是在视图规范中,我可以通过调用 view.stub(:paginate) 来存根辅助方法,但我找不到任何方法从控制器规范中获取视图对象的句柄(例如 controller.view.stub(:paginate)) .有什么方法可以做到这一点,或者我们是否可以选择禁用此方法的 render_views,或者存根一堆与我们无关的内部 kaminari 方法(因为它们应该被 kaminari 的测试覆盖,并且可能会在未来的版本)?
describe SitesController do
render_views
def mock_site(stubs={})
@mock_site ||= mock_model(Site, stubs).as_null_object
end
describe "GET index" do
it "assigns all sites as @sites" do
Site.stub_chain("enabled.ordered.page") {[mock_site]}
# want to do something here like: controller.view.stub(:paginate)
get :index
assigns(:sites).should eq([mock_site])
end
end
end
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rspec rspec2 stub