Hello, I am trying to implement the following scenario, but I am stuck ... The thing is I want to initialize a variable @comment when the stub function "find_comment" is called. The way I do it below doesn't work, since "before_filter :find_comment" returns true/false and @comment initialization is done inside it. Could you please give me a hint how to do it?
One solution would be to use Comment.stub!(:find).and_return(@comment) and do not use the stub find_comment. But how to do it in general, when there is no expression like "@var = my_var.function" in the controller and variable @var is defined in another place and controller just uses it. my_var.stub!(:function).and_return(@var) doesn't seem to be working. Is there is something like my_var.stub!(:function).add_variable(@var).and_return(:true) ? Thank you, Evgeny =============controller_file before_filter :find_comment, :only => [:destroy] def destroy @destroy_id = @comment.id #to be used in rendering partial @comment.destroy respond_to do |format| format.js end end def find_comment @comment = Comment.find(:first, :conditions => ['id= ?',params [:comment_id]]) end ===============spec_file spec code describe CommentsController, "while deleting a comment" do it "should render destroy.rjs in case of success" do @comment = mock_model(Comment) @comment.stub!(:id).and_return(1) @comment.stub!(:destroy).and_return(:true) controller.stub!(:find_comment).and_return(@comment) # execute ajax request request.env["HTTP_ACCEPT"] = "application/javascript" post :destroy, :comment_id => 1, :item_id => 1, :item_type => "Space" response.should render_template("destroy") end end _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users