On Jul 11, 2011, at 8:38 PM, David Zhang wrote:
> I'm wondering how you tell RSpec to ignore null objects entirely.
> For instance, I have this restaurant_id call below:
>
> def create
> @meal = Meal.new(params[:meal])
> @meal.restaurant_id = current_user.restaurant_id # automatically decide
> the restaurant-meal relationship
> if @meal.save
> flash[:notice] = "The meal was saved successfully."
> redirect_to :action => :index
> else
> render :action => :new
> end
> end
>
> ...and I'm not sure how to deal with it. My spec test looks like this right
> now:
>
> describe "POST create" do
> let(:meal) { mock_model(Meal).as_null_object }
>
> before(:each) do
> Meal.stub(:new).and_return(meal)
> # meal.stub(:restaurant_id) Not sure what to do here!!!!!!!!
> end
>
> it "creates a new meal" do
> Meal.should_receive(:new).with("name" => "Pizza").and_return(meal)
> post :create, :meal => { "name" => "Pizza" }
> end
>
> context "when the meal saves successfully" do
> before(:each) do # just for balance; as_null_object causes a truthy
> value to be returned anyway
> meal.stub(:save).and_return(true)
> end
>
> it "sets a flash message" do
> post :create
> flash[:notice].should eq("The meal was saved successfully.")
> end
>
> it "redirects to the meals index" do
> post :create
> response.should redirect_to(:action => :index)
> end
> end
>
> context "when the meal fails to save" do
> before(:each) do
> meal.stub(:save).and_return(false)
> end
>
> it "assigns @meal" do
> post :create
> assigns[:meal].should eq(meal)
> end
>
> it "renders the new template" do
> post :create
> response.should render_template("new")
> end
> end
>
> end
>
> If anyone knows the best way to deal with this, please let me know. I really
> want to adeptly use RSpec in the future.
What's the failure message you're getting?
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users