是否应该对Rails控制器进行验证测试?

时间:2018-08-09 19:03:15

标签: ruby-on-rails ruby testing

我对控制器的哪些部分应该在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

我绝对仍要测试是否创建了有效商店 ,但是我应该检查无效商店是否是不是创建的?

谢谢

编辑

仅对一种可能的无效情况进行测试会是一个好主意,因为如果成功,那么我知道模型验证可能会起作用?

1 个答案:

答案 0 :(得分:1)

  

仅对一种可能的无效情况进行测试会是一个好主意,因为如果成功,那么我知道模型验证可能会起作用?

这是正确的想法,通常就是我要做的。无需在控制器中测试验证状态的所有可能组合,但是最好测试两个常规条件:

1)对于有效的模型,我们是否保存它并重定向到应该放置的位置? (还是我们做出正确的回应?)

2)对于无效的模型(由于任何可能的原因,它可能是无效的),我们是否以用户可以纠正错误的方式重新渲染表格。