Kristian Mandrup
2010-Jun-09 16:56 UTC
[rspec-users] assigns in RSpec 2 - deprecation warning on rendered?
I have come to the views_example in the RSpec book, using RSpec 2 all the way. Now I have this spec: -- describe "messages/show.html.erb" do it "displays the text attribute of the message" do assigns[:message] = stub("Message", :text => "Hello world!") puts "assigns @message: #{@message}" @message = stub("Message", :text => "Hello world!") puts "@message: #{@message}" render rendered.should contain("Hello world!") end end -- $ rspec spec/views/messages/show.html.erb_spec.rb assigns @message: @message: #[RSpec::Mocks::Mock:0x8244a124 @name="Message"] ***************************************************************** DEPRECATION WARNING: you are using deprecated behaviour that will be removed from a future version of RSpec. /Users/kristianconsult/Development/Languages/Ruby/Apps/Web-apps/Rails/ Rails-3/Experimental/views_example/spec/views/messages/ show.html.erb_spec.rb:10:in `block (2 levels) in <top (required)>'' * response is deprecated. * please use rendered instead. --- 1) I notice that the assigns doesn''t seem to work with RSpec 2. An easy fix is to set the instance var directly. Is this the new way? 2) I changed ''response'' to ''rendered'' as the variable I get back from calling ''render'', but I still get a deprecation warning! Has it been changed to a new name again without the deprecation check having been updated?
Trey Bean
2010-Jun-09 17:21 UTC
[rspec-users] assigns in RSpec 2 - deprecation warning on rendered?
Hi Kristian, The new rspec 2 way of doing assigns is assign(variable_name, whats_being_assigned). So your example becomes: assign(:message, stub("Message")) That should get rid of your deprecation message. Cheers, Trey On Wed, Jun 9, 2010 at 10:56 AM, Kristian Mandrup <kmandrup at gmail.com>wrote:> I have come to the views_example in the RSpec book, using RSpec 2 all > the way. > Now I have this spec: > -- > describe "messages/show.html.erb" do > it "displays the text attribute of the message" do > assigns[:message] = stub("Message", :text => "Hello world!") > puts "assigns @message: #{@message}" > @message = stub("Message", :text => "Hello world!") > puts "@message: #{@message}" > render > rendered.should contain("Hello world!") > end > end > > -- > $ rspec spec/views/messages/show.html.erb_spec.rb > > assigns @message: > @message: #[RSpec::Mocks::Mock:0x8244a124 @name="Message"] > > ***************************************************************** > DEPRECATION WARNING: you are using deprecated behaviour that will > be removed from a future version of RSpec. > > /Users/kristianconsult/Development/Languages/Ruby/Apps/Web-apps/Rails/ > Rails-3/Experimental/views_example/spec/views/messages/ > show.html.erb_spec.rb:10:in `block (2 levels) in <top (required)>'' > > * response is deprecated. > * please use rendered instead. > --- > > 1) I notice that the assigns doesn''t seem to work with RSpec 2. An > easy fix is to set the instance var directly. Is this the new way? > > 2) I changed ''response'' to ''rendered'' as the variable I get back from > calling ''render'', but I still get a deprecation warning! Has it been > changed to a new name again without the deprecation check having been > updated? > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100609/2b06b09d/attachment-0001.html>
Kristian Mandrup
2010-Jun-09 21:28 UTC
[rspec-users] assigns in RSpec 2 - deprecation warning on rendered?
> assign(:message, stub("Message")) > > That should get rid of your deprecation message.Yeah! But strange deprecation message that it mentions: * response is deprecated. * please use rendered instead. When it should be: * assigns is deprecated. * please use assign instead. Also, how do I use this assigned message In my show view I have: <%=h @message.text %> When I run it now: assign(:message, stub("Message")) puts "@message: #{@message.inspect}" render @message: nil <--------- OUCH!!! F 1) messages/show.html.erb displays the text attribute of the message Failure/Error: Unable to find matching line from backtrace Stub "Message" received unexpected message :text with (no args) @message is nil after using assigns! But inside the view it seems at least to recognize the stub called "Message"? Now if I inspect @message in the view instead <%=h @message.inspect %> expected the following element''s content to include "Hello world!": #<RSpec::Mocks::Mock:0x81952668 @name="Message"> Now I just need to find out how to extract the text from the Stub message... ?
Trey Bean
2010-Jun-09 21:45 UTC
[rspec-users] assigns in RSpec 2 - deprecation warning on rendered?
If you want to use your assigned message within your spec, you can assign it to a variable in the assign call, e.g. assign(:message, @message = stub(''message''). Since you''re calling text on the message in your view, you should stub that method: assign(:message, @message = stub(''message'', :text => ''hello world''). As to the deprecation message, if you''re still using response, you should be using rendered. The message is correct. Hope the helps ya, Trey On Wed, Jun 9, 2010 at 3:28 PM, Kristian Mandrup <kmandrup at gmail.com> wrote:> > assign(:message, stub("Message")) > > > > That should get rid of your deprecation message. > > Yeah! But strange deprecation message that it mentions: > * response is deprecated. > * please use rendered instead. > > When it should be: > * assigns is deprecated. > * please use assign instead. > > Also, how do I use this assigned message > > In my show view I have: > <%=h @message.text %> > > When I run it now: > > assign(:message, stub("Message")) > puts "@message: #{@message.inspect}" > render > > > @message: nil <--------- OUCH!!! > F > > 1) messages/show.html.erb displays the text attribute of the message > Failure/Error: Unable to find matching line from backtrace > Stub "Message" received unexpected message :text with (no args) > > @message is nil after using assigns! But inside the view it seems at > least to recognize the stub called "Message"? > > Now if I inspect @message in the view instead > <%=h @message.inspect %> > > > expected the following element''s content to include "Hello world!": > #<RSpec::Mocks::Mock:0x81952668 @name="Message"> > > Now I just need to find out how to extract the text from the Stub > message... ? > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100609/53d78ada/attachment-0001.html>