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
参数。