我正在为我的应用程序编写集成测试。我熟悉控制器测试和正常的集成测试。但是,我不确定如何在集成测试中测试嵌套资源。我有一个团队模型嵌套在记分板模型中。相关的路线代码如下。
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建立的关联。 teams.yml文件如下。
team_a:
name: team
win: 1
loss: 2
tie: 0
id: 2
scoreboard: scoreboard_a
我得到一个no方法错误。错误如下所示。
`NoMethodError: undefined method `scoreboards_teams_path'.
由于团队嵌套在记分板显示页面内。因此,我没有可以调用get请求的新操作。我的问题是,我如何调用团队对象的帖子请求。我不确定该怎么做。我试过查看文档但是在嵌套路由上确实没有任何东西。我还有其他嵌套在记分板内的对象。因此,了解如何在rails中测试嵌套路由将会有很长的路要走。一如既往,非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
Rails指南中有一个关于嵌套助手资源的部分,可以充分回答您的问题:http://guides.rubyonrails.org/routing.html#nested-resources
您可以使用指定的帮助程序调用新操作:
new_scoreboard_team_path
为你命名的助手将是
scoreboard_teams_path
你的代码说了scoreboards_teams_path