我有一个具有某些功能的基本控制器,该基本控制器无法从外部访问,没有路线匹配它。
然后,我使用其他控制器扩展该控制器以添加额外的功能,并使用路由,我有 3 个控制器扩展该基本控制器,只是为了在每个控制器上定义 3 个方法。
我想测试基本控制器,但我做不到
post :index
因为该操作没有路由(没有路由匹配错误)
我不想将这些测试添加到这 3 个控制器之一,因为它们变化很大(控制器在... 3 周的活动中使用,然后被删除)。
一些代码...:
基本控制器,CampaignController
class CampaignController < ApplicationController
def index
#some code...
end
def campaign_name
raise('campaign_name missing')
end
def campaign_url
raise('campaign_url missing')
end
#more actions....
end
可访问的控制器之一,SchoolCampaignController
class SchoolCampaignController < CampaignController
def campaign_name
'school'
end
def campaign_url
school_url
end
end
这些控制器基本上就是这样,但有时我需要覆盖其中一个基本操作
那么,我做错了什么?如何正确测试 CampaignController?
编辑:我不想测试这两种引发错误的方法,例如我想测试索引或其他一些操作(未显示)
我尝试过使用“response = controller.index”,但它没有调用之前的过滤器,并且响应不是 http 响应,它只是该命令的输出(我不能像...响应那样做期望。应该 render_template(xxxx) 与那个)
编辑 2:为了绕过路由错误,我在 before(:all) 块中创建了测试内部的路由,然后路由不是问题,但是现在,我收到关于不存在视图的错误(每个可访问控制器都实现了所有观点,但抽象的没有)