如何测试创建实例变量的Application_Controller

时间:2016-01-12 18:46:17

标签: ruby-on-rails rspec

我的应用程序控制器如下:

contents.css

如何为ApplicationController进行测试?

我想传入URLS然后检查@customer是否为nil等。

例如要测试的URL

class ApplicationController
  before_action :set_customer

  def customer?
    @customer.nil?
  end

  private
    def set_customer
       if request.host != "example.com"
          @customer = Customer.find_by_domain("...")
       else
         if request.subdomain != "www"
           @customer = Customer.find_by_sub("...")
         end
       end
    end    


end

1 个答案:

答案 0 :(得分:0)

您不应该测试实例变量。如果需要,将代码移动到服务对象。

assigns将在Rails 5中弃用,因此可能会在某些时候删除。在控制器测试中,您希望根据您的用户(身份验证)和授权检查响应是否符合您的预期(响应代码),并且可能使用正确的格式。

在另一个测试中("视图"测试,我的意思是集成测试),您还要检查视图中的输出是否包含基于实例变量的某些值。

在这种情况下,您只需根据您的子句测试服务调用Customer.find_by_sub(或by_domain),并且您需要测试的所有内容,实例变量不应该是'是你关心的事情。