我试图谷歌找到我的问题的确切解决方案,但没有找到任何适当的结果,所以我在这里要求解决方案。
以下是重要信息
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作为指导。
提前感谢您的帮助。
答案 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