rspec期望返回false,但不会

时间:2014-10-16 09:46:05

标签: ruby-on-rails rspec

我在这里错过了什么?我有一个非常基本的更新功能的控制器测试

context "where all is not well" do 
    before do 
      allow(mpu_instance).to receive(:save).and_return(false)
      patch :update, centre_id: venue_instance, id: 1
    end

    it "flashes an error" do 
      expect(flash[:error]).to_not be_nil
    end

    it " renders edit form again" do 
      expect(response).to render_template('admin/mpus/new')
    end 

所以在这个块中我将保存函数存根以返回false

  def update
    @mpu.update_attributes(params[:mpu])
    if @mpu.save
      flash[:notice]="changes saved"
      return redirect_to(edit_admin_centre_path(@mpuable))
    else
      flash[:error]="Check for errors"
      return redirect_to("admin/mpus/new")
    end
  end 

为什么它会失败!?

 Failure/Error: expect(response).to render_template('admin/mpus/edit')
   expecting <"admin/mpus/edit"> but rendering with <[]>

 Failure/Error: expect(flash[:error]).to_not be_nil
   expected: not nil
        got: nil

我无法看到对此的逻辑解释,因为我存根失败的所有其他测试都以正确的方式执行。我不明白这个有什么不同吗?

我正在通过工厂女孩创建实例,因此'mpu_instance'FactoryGirl.create :mpu_instance

0 个答案:

没有答案