Hello All,
I am a rspec beginner and I am trying to find a way out to write
render expectation in controller spec.I used the following ways
render '/channels/createchannel.html.erb'
view.should_receive(:render).with(:action => "createchannel")
ChannelsController.expect_render(:action => "createchannel")
ChannelsController.render_template(:action => "createchannel")
controller.expect_render(:action => "createchannel")
controller.render_template(:action => "createchannel")
Check out http://rspec.info/rails/writing/controllers.html
Basically you need to do a get or post (in your case probably
post :createchannel) and then there's a response object you can have
expectations on, such as response.should
render_template('createchannel.html').
Note, I'm not really sure what the
ChannelsController.expect_render(...) does, I'm unfamiliar with that
syntax.
One good way to see how to write controller specs is to generate one with script/generate (or rails generate if you're using Rails 3). For example, you could create a new rails app (or use your existing one), and generate an rspec_scaffold. Something like this:
rails generate rspec_scaffold Widget name:string
.. that will generate a controller spec that will work out of the box if you are using default crud methods.