Rails测试在控制器中呈现动作

问题描述 投票:0回答:1

我有一个动态驱动的Rails应用程序,其中的视图由请求的路径决定。

routes.rb中:

Rails.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

  get ':tenant', to: 'tenants#home'
  get  '/:path', to: 'tenants#page', :constraints => { :path => /.*/ }
end

TenantsController:

class TenantsController < ApplicationController
    def home
        render :template => params[:tenant] + "/home"
    end

    def page
        render :template => params[:path]
    end
end

正如您所看到的那样,我们从端点获取路径约束并从中呈现视图模板。

我想编写一个测试,确保rails请求一个与所请求的URL匹配的视图模板。 (基本上测试TenantsController中的页面方法)。

鉴于我不想将我的测试绑定到可能在系统中的租户,如何在没有测试知道某些Tennant的情况下如何编写测试?

ruby-on-rails ruby
1个回答
0
投票

您可以使用assert_template方法为控制器编写测试:

test "should render the correct template" do
  ['path1', 'path2'].each do |path|
    get '/', params: { path: path }
    assert_template "#{path}"
  end
end

This guide提供了有关如何测试控制器的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.