rspec ruby​​ on rails新手问题关于控制器

时间:2011-09-08 19:29:55

标签: ruby-on-rails ruby rspec

我是新的RoR或rspec并试图学习它。首先,我找不到新手的教程,只是高级的,因为我想学习RoR,同时学习测试。 我正在为简单的CRUD控制器编写测试,但我不知道如何测试例如params是否传递给我的创建动作,如果它被保存了。

def create
    @item = TextItem.new(params[:item])

    if @item.save
       redirect_to(:action => 'index')
    else
       render('new')
      end
  end

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是熟悉rails和ruby,然后再使用test / unit或minitest或rspec,黄瓜或许多其他测试技术进入tdd / bdd。

我建议您先购买一本书/电子书,例如这本Agile rails development with rails,电子书只需24美元。你会节省很多时间。

有时Rspec有点棘手/神奇,没有rails / ruby​​的基础知识,很难开始使用。

我不建议您一次性学习rails和rspec。

此行动的BTW规格可以是这样的:

  describe "POST create" do
    let(:item) { mock_model(TextItem) }

    before(:each) do
      TextItem.stub(:new).and_return(item)
    end

    it "saves the item" do
      item.should_receive(:save)
      post :create
    end

    context "when the item saves successfully" do
      before(:each) do
        item.stub(:save).and_return(true)
      end

      it "redirects to the items index" do
        post :create
        response.should redirect_to(:action => "index")
      end
    end

    context "when the item fails to save" do
      before(:each) do
        item.stub(:save).and_return(false)
        item.stub_chain(:errors, :empty?).and_return(false)
      end

      it "renders the new template" do
        post :create
        response.should render_template(:new)
      end
    end
  end
相关问题