[rspec-users] view spec template.base_path

Phillip Koebbe phillipkoebbe at gmail.com
Thu Mar 25 14:50:47 EDT 2010


  On 2010-03-25 1:42 PM, Phillip Koebbe wrote:
>  I have a helper method
>
> def partial_path_for(partial, options = {})
>     base_path = options[:base_path] || self.template.base_path
>     "_partials/#{base_path}/#{partial}"
> end
>
> and use it in a template (haml) like
>
> = render :partial => partial_path_for(:details)
>
> I'd like to have a similar helper for view specs so I can do this
>
> describe 'web/admin/merchants/show.html.haml' do
>     before(:each) do
>         @merchant = stub_model(Merchant, :name => 'Some Merchant')
>         assigns[:merchant] = @merchant
>     end
>
>     it 'should render the details partial' do
>         partial_path = partial_path_for(:details, :base_path => 
> self.template.base_path)
>         template.should_receive(:render).with(:partial => partial_path)
>         render
>     end
>
>     it_should_behave_like 'merchant details'
> end
>
> Unfortunately, if I debug right before the template.should_receive 
> statement, self.template.base_path is nil. How can I get the path to 
> the template?
>

Right after I sent that message, I discovered I could set a variable 
before the initial describe statement and reuse it. This works:

base_path = 'web/admin/merchants'
describe "#{base_path}/show.html.haml" do
     ...
     partial_path = call_some_method(:details, base_path)
     ...
end

But I'd really rather have the value coming from somewhere else. This 
method depends on me creating a variable, which I don't like.

Peace,
Phillip


> Thanks,
> Phillip



More information about the rspec-users mailing list