My main layout includes separate content_for/yield sections for my
header,
sidebar, footer, and content. However, when running a view spec, the
rendered
variable seems to only contain a string of just the primary
content and ignores the header/footer/sidebar as well as the rest of my
layout file (the “render” call just returns my primary content wrapped
in
generic and tags).
Is there a way to get to the content captured in a “content_for” block
through my view specs, or at the very least get my “render” call to use
the
full layout?
I’ve tried doing a “render :layout => ‘application’” which gives me:
- contacts/show.html.erb shows a URL if the contact has one
Failure/Error: render :layout => “application”
undefined method `formats’ for nil:NilClass
/home/dylan/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0.rc/lib/active_support/whiny_nil.rb:48:in
method_missing' # /home/dylan/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.0.rc/lib/action_view/render/rendering.rb:25:in
render’
#
/home/dylan/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.0.rc/lib/action_view/test_case.rb:103:in
render' # /home/dylan/.rvm/gems/ruby-1.9.2-p0/gems/rspec-rails-2.0.0.beta.19/lib/rspec/rails/example/view_example_group.rb:73:in
render’
# ./spec/views/contacts/show.html.erb_spec.rb:20:in `block (2
levels) in
I’ve also tried using response.capture(:sidebar), response[:sidebar],
rendered.capture(:sidebar), rendered[:sidebar], view.capture(:sidebar),
etc.
and none of them worked – they all give various errors.
Here is my view spec that I’m trying to run:
describe “contacts/show.html.erb” do
it “shows a URL if present” do
@contact = Factory(:complete_contact, :web_page => "
http://www.example.com") # Using Factory Girl
render
rendered.should have_selector(“span”, :content => "
http://www.example.com")
end
end
Thank you!
Dylan M.
[email protected]