Как бы вы протестировали это действие в RSpec? - PullRequest
0 голосов
/ 19 января 2011

Я новичок в RSpec, у меня есть этот контроллер в моем ruby ​​on rails, код

def create
  @article = current_user.articles.build params[:article]
  if @article.save
    redirect_to articles_path, :notice => 'Article saved successfully!'
  else
    render :new
  end
end

Как бы вы протестировали это действие в RSpec?

Спасибо

1 Ответ

6 голосов
/ 20 января 2011
  describe "POST 'create'" do
    let(:article) { mock_model(Article) }

    before(:each) do
      controller.stub_chain(:current_user,:articles,:build) { article }
    end

    context "success" do
      before(:each) do
        article.should_receive(:save).and_return(true)
        post :create
      end

      it "sets flash[:notice]" do
        flash[:notice].should == "Article saved successfully!"
      end

      it "redirects to articles_path" do
        response.should redirect_to(articles_path)
      end

    end

    context "failure" do
      before(:each) do
        article.should_receive(:save).and_return(false)
        post :create
      end

      it "assigns @article" do
        assigns(:article).should == article
      end

      it "renders new" do
        response.should render_template('new')
      end
    end

  end
...