我对控制器的哪些部分应该在Ruby on Rails应用程序中进行测试有疑问。任何帮助将不胜感激。
当我创建需要验证的新模型(例如validates :name, presence: true
)时,我总是为这些模型编写测试。例如(如果型号名称为User):
test "name should be present" do
assert_not User.new({ name: nil }).valid?
end
但是,我还有一个与模型“匹配”的控制器(例如,用户)。即使我已经在测试模型,是否也应该测试控制器是否验证了其参数?
示例:
test "invalid user should not be created" do
assert_no_difference "User.count" do
post random_models_path, store: { name: " " }
end
end
我绝对仍要测试是否创建了有效商店 ,但是我应该检查无效商店是否是不是创建的?
谢谢
仅对一种可能的无效情况进行测试会是一个好主意,因为如果成功,那么我知道模型验证可能会起作用?
答案 0 :(得分:1)
仅对一种可能的无效情况进行测试会是一个好主意,因为如果成功,那么我知道模型验证可能会起作用?
这是正确的想法,通常就是我要做的。无需在控制器中测试验证状态的所有可能组合,但是最好测试两个常规条件:
1)对于有效的模型,我们是否保存它并重定向到应该放置的位置? (还是我们做出正确的回应?)
2)对于无效的模型(由于任何可能的原因,它可能是无效的),我们是否以用户可以纠正错误的方式重新渲染表格。