Thanks David...I am using jRuby on Rails1.5.0 and following are the details of gems:- rails-2.3.5 rspec-1.3.0 rspec-rails-1.3.2
My script needs to test the create channel method based on a condition given by checkChannel? which I have stubbed as true.If true it should render the action createchannel. As mentioned above I used response.should render_template("createchannel").It gave me the following error NoMethodError in 'ChannelsController should re-direct to create channel' undefined method `response' for #<ActiveSupport::TestCase::Subclass_1:0x14b2263> When I removed all statements and kept only post :createchannel in the if block,it gave me NoMethodError in 'ChannelsController should render the createchannelpage' undefined method `post' for #<ActiveSupport::TestCase::Subclass_1:0x1f5205c> Is there any gem that needs to be installed that would make this work and if yes is it compatible with jRuby on Rails? Regards Chandrika On Jul 12, 3:59 pm, David Chelimsky <dchelim...@gmail.com> wrote: > On Jul 12, 2011, at 4:36 AM, Chandu80 wrote: > > > Hello All, > > I am a rspec beginner > > Welcome! > > > > > 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") > > > All fail giving a NoMethodError > > > ********************************************************************************** > > My spec is as follows > > > require File.dirname(__FILE__) + '/../spec_helper' > > > describe ChannelsController do > > it "should re-direct to create channel" do > > Channel.stub!(:checkChannel?).and_return(1) > > ChannelsController.expect_render(:action => "createchannel") > > > #view.should_receive(:render).with(:action => "createchannel") > > #render '/channels/createchannel.html.erb' > > end > > > end > > ********************************************************************************** > > > Can anyone please let me know how this can be fixed.? > > Please always include the versions of Rails and RSpec that you are using when > asking for help. Things are different in different versions. I'm going to > assume you're using rails-3 and rspec-rails-2. > > The name of the example begins with "should re-direct ...". The rails testing > framework lets you assert that a specific template is rendered or that there > is a redirect, but not both in the same action. > > You also have to invoke an action on the controller in each example for > anything to happen. e.g. > > describe "POST create" do > describe "with valid params" do > it "redirects to the created channel" do > post :create, :channel => valid_attributes > response.should redirect_to(Channel.last) > end > end > > describe "with invalid params" do > it "re-renders the 'new' template" do > Channel.any_instance.stub(:save).and_return(false) > post :create, :channel => {} > response.should render_template("new") > end > end > end > > Take a look at the generated controller spec when you run 'rails generate > scaffold ...':https://gist.github.com/942203. If that doesn't make sense, > feel free to ask questions. > > HTH, > David > > > Thanks & Regards > > Chandrika > > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users