1

我正在我的 Rails 3.2 应用程序中使用 rspec 测试对我的路由的简单获取请求。由于所有都是 get 请求,并且都只是具有与视图名称相似的不同操作名称,因此为每个 get 请求手动编写不同的测试确实是重复的。

相反,我想想出这样的东西:

%(action_1 action_2 action_3 action_4).each do |action|
    it "routes to the #{action} page" do
        get("liver_diseases#{action}_path").should route_to("liver_diseases##{action}")
    end
end

它在这个伪代码上失败了:get("liver_diseases_#{action}_path") 所以我需要做的是一个动态方法调用 - 但对于我发现的,这将涉及.send(:method_name),为此我需要知道类名。我找不到那个。

我需要做什么才能使此方法调用起作用?

4

1 回答 1

1

这将涉及 .send(:method_name),为此我需要知道类名

当接收器丢失时,它总是self. 在控制器示例的上下文中,self应该是控制器实例。因此,您应该能够通过以下方式获得该路径:

send "liver_diseases_#{action}_path"

这应该相当于:

controller.send "liver_diseases_#{action}_path"
于 2013-01-23T17:18:12.513 回答