【发布时间】:2013-01-28 06:59:54
【问题描述】:
虽然我通常使用 Fat Model, Skinny Controller 方法,但我可以看到测试复杂控制器动作的意义,但我想知道:是否有任何理由为 rails 脚手架生成的 RESTful 动作编写控制器测试?
【问题讨论】:
标签: ruby-on-rails ruby rspec bdd
虽然我通常使用 Fat Model, Skinny Controller 方法,但我可以看到测试复杂控制器动作的意义,但我想知道:是否有任何理由为 rails 脚手架生成的 RESTful 动作编写控制器测试?
【问题讨论】:
标签: ruby-on-rails ruby rspec bdd
简单地说:如果您的应用程序中有由您维护的代码,请测试该代码。
我避免为 InheritedResources 或其他 REST gem 提供的操作或行为编写测试,但是一旦有逻辑,尤其是重定向和身份验证/资源所有权逻辑,就应该对其进行测试。值得注意的是,我上次使用脚手架和 rspec 时,它也为我生成了所有这些测试。
【讨论】:
根据我的经验,您的控制器规范或测试有助于调试操作中的路径或值。通常,您会看到:
@post = some_logic_gets_a_post
if @post.present?
# happy path
else
# failure path
end
通过控制器测试,您可以确保在您的假设下进入正确的状态,或者您遇到正确的异常。
【讨论】:
总的来说,我发现它在测试身份验证和授权时很有用,此时我并不真正关心返回的内容,但如果我得到正确的重定向、状态代码等,我会更关心。
我重视控制器测试的第二种情况是控制器可以用多种方言回答。例如JSON、XML 和/或 HTML。但是,当格式变得复杂时,最好使用构建器来执行此操作,而不是将这种复杂性隐藏在控制器中。
【讨论】: