控制器测试RESTful操作

时间:2013-02-12 20:51:01

标签: ruby-on-rails ruby rspec bdd

虽然我通常使用Fat Model,Skinny Controller方法,但我可以看到测试复杂控制器操作的重点,但我想知道:有没有理由为rails scaffolding生成的RESTful操作编写控制器测试?

3 个答案:

答案 0 :(得分:1)

根据我的经验,您的控制器规范或测试有助于调试操作中的路径或值。通常,你会看到:

@post = some_logic_gets_a_post
if @post.present?
   # happy path
else
   # failure path
end

通过控制器测试,您可以确定,您将根据您的假设进入正确的状态,或者您达到了正确的例外情况。

答案 1 :(得分:1)

一般来说,我发现它在测试身份验证和授权时很有用,此时我并不关心内容返回的内容,但如果我得到正确的重定向,状态代码等,则更多。

我评估控制器测试的第二种情况是控制器可以用多种方言回答。例如JSON,XML和/或HTML。但是,当格式变得复杂时,最好使用构建器执行此操作,而不是在控制器中隐藏这种复杂性。

答案 2 :(得分:1)

简单地说:如果您的应用程序中有代码,由您维护,请测试该代码。

我避免为InheritedResources或其他REST gem提供的操作或行为编写测试,但是一旦有逻辑,特别是重定向和身份验证/资源所有权逻辑,就应该测试它。值得注意的是,我最后一次使用scaffold和rspec时,它也为我生成了所有这些测试。