RSpec - 对现有记录的请求具有状态200的响应

时间:2015-03-25 15:50:23

标签: ruby-on-rails rspec

添加decent_exposure后,以下规范失败:

it "redirects to root_path if product cannot be found" do
  product = create :product
  get :show, {id: 2}

  expect(response).to redirect_to(root_path)
end

我使用CanCanCan并将以下代码添加到ApplicationController,因此当找不到记录并重定向到根路径时它会被抢救:

rescue_from ActiveRecord::RecordNotFound do
  redirect_to root_path, alert: controller_name.singularize.capitalize << " cannot be found"
end

它确实有效,如果记录不存在则会重定向,并且我在控制台中看到“已完成302已发现”消息。但是规范失败了,消息'预期响应是重定向,但是&lt; 200&gt;'。似乎是由于'添加到http://localhost:3000/'之前'在布局/应用程序中渲染了产品/ show.html.haml',这是在添加了decent_exposure之后出现的。

在控制器中我只有:

expose(:product, attributes: :product_params)
expose(:products) { Product.paginate(page: params[:page], per_page: 5) }

没有显示动作。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

添加了显示操作:

def show
  return unless product
end

现在它正常工作。