Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rspec ruby on rails关于控制器的新手问题_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

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

Ruby on rails rspec ruby on rails关于控制器的新手问题,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我对RoR或rspec还不熟悉,正在努力学习。首先,我找不到适合新手的教程,只是高级教程,因为我想学习RoR,同时还要学习测试。 我正在为简单的CRUD控制器编写测试,但我不知道如何测试例如,参数是否传递到我的create操作,以及它是否被保存 def create @item = TextItem.new(params[:item]) if @item.save redirect_to(:action => 'index') else

我对RoR或rspec还不熟悉,正在努力学习。首先,我找不到适合新手的教程,只是高级教程,因为我想学习RoR,同时还要学习测试。 我正在为简单的CRUD控制器编写测试,但我不知道如何测试例如,参数是否传递到我的create操作,以及它是否被保存

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

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

我认为更好的方法是熟悉rails和ruby,然后使用test/unit或minitest或rspec、cumber或许多其他测试技术深入研究tdd/bdd

我建议你买一本书/电子书开始,比如这本,电子书只要24美元。你会节省很多时间

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

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

顺便说一句,此操作的规格如下所示:

  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

我发现Michael Hartl的RoR教程是学习RoR和rspec的一个很好的资源。