redirect_to:action => :Rspec中的索引

时间:2016-12-14 18:32:52

标签: ruby-on-rails ruby testing rspec


我试图谷歌找到我的问题的确切解决方案,但没有找到任何适当的结果,所以我在这里要求解决方案。

以下是重要信息
Ruby版本 ruby​​ 2.2.4p230(2015-12-16修订版53155)[x86_64-darwin15]
Rails版本 Rails 4.2.0
Rspec版本 3.5.4

我的控制器有一个名为clearCart的动作,它基本上用于清除cart session

这是我的行动

def clearCart
  session[:cart] = nil
  redirect_to :action => :index
end

上述行动的主要目的是测试redirect_to :action => :index

相同操作的路线(如果需要)

get 'cart/clear' => 'cart#clearCart'

以下是用于测试相同操作的 Rspec 测试

describe "GET #clearCart" do
  it "should clear cart" do
    get :clearCart
    subject { get :clearCart }
    subject.should redirect_to :action => :index
    # expect(response).to redirect_to(:index)
    # response.should redirect_to :index
    # before { post :clearCart }
    # render 'index'
    # specify { response.should redirect_to('frontend/cart/index') }
  end
end

(评论是我尝试执行测试的可能方式)

这是我的索引操作 (如果需要)

def index
  render 'frontend/cart/index' ,layout: false
end

我通常会引用RELISH作为指导。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

如果您期望匹配器,则以下代码应该可以使用

describe "GET #clearCart" do
  subject { get :clearCart }
  it { is_expected.to redirect_to(action: :index) }
end

如果是匹配的话,请使用

describe "GET #clearCart" do
  before { get :clearCart }
  it { should redirect_to(action: :index) }
end