控制器规格和强大的参数

Controller spec & strong parameters

非常基本的控制器规格失败,因为我设置的强大参数不可靠?

class OrdersController
  def create
    @order = Order.new(order_params)
    if @order.valid?
      ...
  end

  private
  def order_params
    params.require(:order).and_permit(:email)
  end
end

测试代码:

describe OrdersController, "Create action", type: :controller do
  it "should call valid? method" do
    Order.any_instance.should_receive(:valid?)
    post :create, order: {email: "test@example.com"}
  end
end

结果:

Failure/Error: post :create, order: {email: "test@example.com"}
 NoMethodError:
   undefined method `and_permit' for {"email"=>"test@example.com"}:ActionController::Parameters

jvnill对原post的评论一针见血,是permit不是and_permit

params.require(:order).permit(:email)