【问题标题】:Testing nested routes in rails在 Rails 中测试嵌套路由
【发布时间】:2016-02-26 16:23:02
【问题描述】:

我正在为我的应用程序编写集成测试。我熟悉控制器测试和正常的集成测试。但是,我不确定如何在集成测试中测试嵌套资源。我有一个嵌套在记分牌模型中的团队模型。相关路线代码如下。

resources :scoreboards do 
   resources :teams, only: [:edit, :create, :destroy, :update]
 end

我想为团队测试所有重要的工作流程。例如,无效和有效的创建团队。测试代码写在下面。

def setup
    ActionMailer::Base.deliveries.clear
    @scoreboard = scoreboards(:scoreboard_a)
  end



test 'Invalid creation of the teams' do
    assert_no_difference 'Team.count' do
      post scoreboards_teams_path(@scoreboard), team: {name: " ", 
                                                        win: 0, 
                                                       loss: 0, 
                                                        tie: 0 }

    end
  end 

我以必须存在团队名称的方式设置了验证。问题在于路线。我还与 scoreboard_a 建立了关联。 team.yml 文件如下所示。

team_a:
    name: team
    win: 1
    loss: 2
    tie: 0
    id: 2
    scoreboard: scoreboard_a 

我收到一个无方法错误。错误如下。

`NoMethodError: undefined method `scoreboards_teams_path'. 

由于团队嵌套在记分牌显示页面中。因此,我无法调用获取请求的新操作。我的问题是,我将如何调用团队对象的发布请求。我不确定该怎么做。我试过查看文档,但嵌套路由上真的没有任何东西。我还有其他嵌套在记分牌内的对象。因此,了解如何在 Rails 中测试嵌套路由真的会有很长的路要走。与往常一样,非常感谢任何帮助。谢谢!!

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 testing


    【解决方案1】:

    Rails 指南中有一个关于嵌套助手资源的部分,应该足以回答您的问题:http://guides.rubyonrails.org/routing.html#nested-resources

    您可以使用命名助手调用新操作:

    new_scoreboard_team_path
    

    为你命名的帖子将是

    scoreboard_teams_path
    

    您的代码显示 scoreboards_teams_path

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 2015-11-22
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多