1

虽然我通常使用 Fat Model, Skinny Controller 方法,但我可以看到测试复杂控制器动作的意义,但我想知道:是否有任何理由为 rails 脚手架生成的 RESTful 动作编写控制器测试?

4

3 回答 3

1

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

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

通过控制器测试,您可以确保您将在假设下进入正确的状态,或者您遇到正确的异常。

于 2013-02-12T20:56:21.697 回答
1

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

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

于 2013-02-12T22:04:26.727 回答
1

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

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

于 2013-02-13T18:54:46.340 回答