控制器规格和强大的参数
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)
非常基本的控制器规格失败,因为我设置的强大参数不可靠?
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)