迷你测试 - 在没有渲染的情况下测试应用程序控制器方法
mini test - testing an application controller method without render
我有一个非常简单的应用程序控制器方法要测试。其他应用程序控制器方法将使用它来确定我们是否需要重定向。所以它不会执行任何 render
功能。
class ApplicationController < ActionController::Base
def has_consent
current_user ? current_user.consent : nil
end
end
迷你测试的所有示例都使用#assert_response
或#assert_redirected_to
。如何在迷你测试框架内访问 application_controller
方法? IE,我可以写测试,但是我到底怎么设置它?
简单的答案是你不知道。
控制器的 public API 是响应 HTTP 请求的操作,您可以通过发送 HTTP 请求并编写有关返回响应的断言来测试它们。
如果您的方法不响应 HTTP 请求,则它应该是私有方法。 而且你不测试私人。
相反,您应该通过测试您的应用程序在用户未同意时如何响应来进行测试。不是实施细节。
如果单独测试方法真的很重要,那么它不属于控制器。而是在模型层或助手中 - 可以单独测试。
我有一个非常简单的应用程序控制器方法要测试。其他应用程序控制器方法将使用它来确定我们是否需要重定向。所以它不会执行任何 render
功能。
class ApplicationController < ActionController::Base
def has_consent
current_user ? current_user.consent : nil
end
end
迷你测试的所有示例都使用#assert_response
或#assert_redirected_to
。如何在迷你测试框架内访问 application_controller
方法? IE,我可以写测试,但是我到底怎么设置它?
简单的答案是你不知道。
控制器的 public API 是响应 HTTP 请求的操作,您可以通过发送 HTTP 请求并编写有关返回响应的断言来测试它们。
如果您的方法不响应 HTTP 请求,则它应该是私有方法。 而且你不测试私人。
相反,您应该通过测试您的应用程序在用户未同意时如何响应来进行测试。不是实施细节。
如果单独测试方法真的很重要,那么它不属于控制器。而是在模型层或助手中 - 可以单独测试。