【发布时间】:2016-03-08 14:51:48
【问题描述】:
我是 Rails 新手,我想通过控制器测试来测试我设置的 Book 模型的强参数。我正在使用 Minitest 和 Rails 4。
图书模型:
class Book < ActiveRecord::Base
validates :title, presence: true, length: { in: 1..150 }
end
书控制器机智参数:
def create
@book = Book.new book_params
if @book.save
redirect_to action: "index", notice: 'Success.'
else
render :new
end
end
private
def book_params
params.require(:book).permit(:title, :cover_image)
end
我的测试想法 - 确实失败了,因为它创建了一个条目:
assert_no_difference('Book.count') do
post :create, book: {
id: 123,
title: "Lorem ipsum"
}
end
如何让测试变为绿色?使用控制器测试测试强参数是否正确?
【问题讨论】:
-
为什么不创建条目?
-
我的想法是,由于给定的
id参数,它不应该创建记录。或者 Rails - 只是大声思考 - 忽略所有未列入白名单的参数,这就是我的测试创建条目的原因? -
未经许可的参数将被删除。
-
哎呀。感谢您的洞察力 :) 我自己回答了这个问题 - 希望它能帮助其他刚接触 Rails 的人。
标签: ruby-on-rails ruby-on-rails-4 minitest