Ruby RSpec post rails 5的嵌套控制器规范存在问题

Ruby RSpec post rails 5的嵌套控制器规范存在问题,ruby,rspec,rspec-rails,ruby-on-rails-6,Ruby,Rspec,Rspec Rails,Ruby On Rails 6,鉴于这个人为的例子: RSpec.description City::Road::HouseController,type::controller do 让(:house){create:house} 描述“索引”是什么 上下文“接收到的请求没有有效的基本身份验证标头”do 它“未经授权”吗 在{method_that_unset_basic_auth_header}之前 get(:index,params:{house_id:house.id}) 期望(响应)。具有\u http\u状态(:未

鉴于这个人为的例子:

RSpec.description City::Road::HouseController,type::controller do
让(:house){create:house}
描述“索引”是什么
上下文“接收到的请求没有有效的基本身份验证标头”do
它“未经授权”吗
在{method_that_unset_basic_auth_header}之前
get(:index,params:{house_id:house.id})
期望(响应)。具有\u http\u状态(:未授权)
结束
结束
结束
结束
使用以下路线:

namespace:city do
名称空间:road do
资源:位置,仅:%i[显示索引]do
资源:house,仅:%i[索引],位于::member
结束
结束
结束
为什么我总是犯这个错误

ActionController::UrlGenerationError:
没有路径匹配{:action=>“index”,:controller=>“city/road/house:house_id=>1}
我认为这是因为它忽略了
位置

我预计路线是:

/city/road/location/:location\u id/house

我看过以下问题/答案,但没有一个有用(尽管我承认我可能遗漏了一些东西):


  • 我又看了一眼我链接的其他问题/答案,发现它们都有一个不同点

    我删除了
    :member
    选项

    namespace:city do
    名称空间:road do
    资源:位置,仅:%i[显示索引]do
    资源:房屋,仅:%i[索引]
    结束
    结束
    结束
    

    规范现在是绿色的,我不知道为什么这会影响规范,因为不管有没有这个选项,路由看起来都是一样的。

    你到底希望路由是什么?啊,糟糕,谢谢你的捕获!
    成员
    表示你希望路由在父范围的ID范围内。在这种情况下,这将是一个
    location\u id
    。因此,您可以像以前一样操作,也可以在测试中添加一个
    location\u id
    参数。