Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rspec view stubs and partials

I'm testing a view with RSpec (2.12 on Rails 3.2.8). I'm using CanCan to conditionally display certain elements on a page. This requires a controller method 'current_user'. In some of my specs I've been able to stub out current_user, eg. controller.stub(:current_user).and_return(etc) or view.stub.etc .

This works for some of my specs. But I've got a couple where it's not working and I don't understand why.

The two specs where it's not working test a view, which calls down into a partial, and inside the partial I access 'current_user' as a method. The error is

undefined local variable or method `current_user' 

So I guess my question is how to stub methods correctly so that they can be accessed down inside partials.

How should it be done?

like image 791
John Small Avatar asked Dec 27 '22 12:12

John Small


1 Answers

A controller stub won't work because you're not testing a controller, you're testing a view. Just use a view stub instead:

view.stub(:current_user).and_return(etc)

This should work in a partial as well as in a view.

See: passing view spec that stubs a helper method

like image 134
Chris Salzberg Avatar answered Jan 12 '23 16:01

Chris Salzberg