[rspec-users] How to use expect_render?

Shaker flyeminent at hotmail.com
Tue Aug 14 01:44:01 EDT 2007


Dear Fellows:
Sorry to bother you over and over again. I did follow your instruction to
write the controller spec, but...the thing is not getting better.:-(
I'd like to post my code again, hopefully you would figure it out.
My Controller
class MyController
  def index
    pre = Array.new
    render :partial=>'index', :layout=>false, :locals=>{:pre=>pre} 
  end
end
Notes: sorry, I just missed the colons for layout and locals, but I am
afraid that the spec still failed even I added in the colons.
------------------------------------------------------------
My Controller spec
describe MyController do
  it "should render the index partial" do
    controller.expect_render(:partial=>'index', :layout=>false)
    get 'index'
  end
end
------------------------------------------------------------
By the way, I am using JRuby rather than ruby. Hence my command to run the
spec above is
jruby --command spec spec/controllers/my_controller_spec.rb --format specdoc
It always gave me an error:Mock 'expect_render_mock_proxy' expected :render
with 
({:partial=>"index"}) once, but received it 0 times.
Is it because "expect_render" is not compatible with JRuby or I forgot to
mock something?
  Thanks a lot.
  Regards.

aslak hellesoy wrote:
> 
> On 8/13/07, Shaker <flyeminent at hotmail.com> wrote:
>>
>> Dear Aslak and David:
>>     I have tried two possible ways to get expect_render work. However,
>> they
>> all failed. My combinations are:
>> my controller spec
>>   describe MyController do
>>     before do
>>       #do nothing
>>     end
>>     it "should render the index partial" do
>>       controller.expect_render(:partial=>'index') #1st way
> 
> That's the way to go
> 
>>       MyController.expect_render(:partial=>'index') #2nd way
>>     end
>>   end
>>
>> The 1st way gave me an error: Mock 'expect_render_mock_proxy' expected
>> :render with ({:partial=>'index'}) once, but received it 0 times
> 
> You've forgotten to run the action. RSpec doesn't magically guess what
> action is supposed to render your index partial.
> 
> it "should render the index partial" do
>   controller.expect_render(:partial=>'index')
>   get 'index'
> end
> 
> 
>> The 2nd way gave me an error: undefined method 'expect_render'
>> Do I need to mock the controller or there are some mistakes I have made
>> in
>> my spec?
>>
>> Shaker wrote:
>> >
>> > Hi:
>> >     I am a rspec beginner. I have scratched my head for the whole
>> > afternoon, trying to figure out a way of writing render expectation in
>> > controller spec. However, I failed. It kept telling me that the
>> > 'expect_render' was an undefined method. I have installed rspec 1.0.8
>> and
>> > rspec_on_rails as well. Below is the controller to be tested.
>> >
>> > Controller
>> >     def index
>> >       pre = Array.new
>> >       render :partial=>'index', :layout=>false, :locals=>{:pre=>pre}
>> >     end
>> >
>> > My controller spec
>> >     before do
>> >       @controller = MyController.new
>> >     end
>> >     it "should render the index partial" do
>> >       @controller.expect_render(:partial=>'index', :layout=>false) #I
>> > don't know how to expect the :locals
>> >     end
>> >
>> > As I mentioned, the spec failed , saying that "Undefined method
>> > 'expect_render' ". There might be some mistakes in my "before" block.
>> Do I
>> > need to mock the controller or something else? Anyway, do any one know
>> how
>> > to fix the problem? It will be even better if you guys could show me a
>> > piece of example code.
>> >     Thanks!!
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-to-use-expect_render--tf4259590.html#a12123224
>> Sent from the rspec-users mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
> 
> 

-- 
View this message in context: http://www.nabble.com/How-to-use-expect_render--tf4259590.html#a12136984
Sent from the rspec-users mailing list archive at Nabble.com.



More information about the rspec-users mailing list