迷你测试 - 在没有渲染的情况下测试应用程序控制器方法

时间:2017-10-30 15:45:35

标签: ruby-on-rails minitest

我有一个非常简单的应用程序控制器方法,我想测试。其他应用程序控制器方法将使用它来确定是否需要重定向。因此,它不会执行任何render功能。

class ApplicationController < ActionController::Base
  def has_consent
    current_user ? current_user.consent : nil
  end
end

迷你测试的所有示例都使用#assert_response#assert_redirected_to。如何在迷你测试框架内访问application_controller方法? IE,我可以写测试,但我怎么设置它?

1 个答案:

答案 0 :(得分:1)

简单的答案是你不要。

控制器的公共API是响应HTTP请求的操作,您可以通过发送HTTP请求并编写有关返回的响应的断言来测试它们。

如果您的方法不响应HTTP请求,则它应该是私有方法。 你不会测试私有。

相反,您应该通过测试应用程序在用户未经同意时如何响应来进行测试。不是实施细节。

如果单独测试方法非常重要,那么它不属于控制器。而是在模型层或帮助器中 - 可以单独测试。