On 21 Oct 2009, at 17:31, Elza wrote:
How can I spec the 3rd line of my controller?
What does that method do to the other objects in your domain? Can you describe that behaviour easily using mocks and stubs?
If not, you would be best to move the method out of the controller and onto another class, such as the User model. This is called 'listening to your tests'[1]
[1]http://www.mockobjects.com/book/listening-to-the-tests.html
update_successful, error_msg = update_channels_association def create @user = User.new(get_param(:user, :hash)) if @user.save update_successful, error_msg = update_channels_association set_flash_if update_successful,:resource_successfully_created.t(:resource => :user.t[:one]), error_msgredirect_to @user else render :action => :new end end ************************** My spec describe UsersController do describe "POST create" do ############################################################## should_require_login :post, :create ############################################################## describe "authenticated user" do ############################################################## before(:each) do login_as_user @user = mock_model(User, :save => nil) User.stub!(:new).and_return(@user) @params = {'name' => 'Mary'} end ############################################################## def do_post post :create end ############################################################## it "should build a new user" do User.should_receive(:new).with(@params).and_return(@user) post :create, :user => @params end ############################################################## it "should save the user" do @user.should_receive(:save) do_post end ############################################################## context "when the user saves successfully" do before(:each) do @user.stub!(:save).and_return true controller.should_receive(:update_channels_association) end it "should set a flash[:notice] user" do do_post flash[:notice].should == :resource_successfully_created.t(:resource => :user.t[:one]) end ************************* The error 'UsersController POST create authenticated user when the user saves successfully should set a flash[:notice] user' FAILED expected: "Usu�rio criado(a) com sucesso.", got: nil (using ==) I know it is missing to verify the local variable update_successful. If anyone can help me. Cheers EM -- View this message in context: http://www.nabble.com/How-can-I-spec-protect-method-tp25995877p25995877.html Sent from the rspec-users mailing list archive at Nabble.com. _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
cheers, Matt http://mattwynne.net +447974 430184 _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
