我有一个动态驱动的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的情况下如何编写测试?
您可以使用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提供了有关如何测试控制器的更多详细信息。