Minitest无法识别api_v1_airlines路由,报错未定义变量/方法
问题解决方法
你的错误根源是调用了错误的路由助手方法名,Rails生成的路由助手默认会以_path(相对路径)或_url(绝对路径)作为后缀,而不是直接用路由名称api_v1_airlines。
修正步骤
修改测试代码中的路由调用:
将原来的get api_v1_airlines替换为get api_v1_airlines_path或者get api_v1_airlines_url,修正后的代码如下:# airlines_controller_test.rb class AirlinesControllerTest < ActionDispatch::IntegrationTest test "should get index" do get api_v1_airlines_path assert_response :success end end额外注意路由参数约束:
从你的路由输出{:params=>:slug}来看,这个路由定义了slug参数约束,如果你的index动作确实需要接收slug参数,那么调用助手时需要传入对应参数,比如:get api_v1_airlines_path(slug: "example-slug")如果这个约束是误加的,可以检查
config/routes.rb中的路由定义,去掉不必要的params: :slug配置。
关于测试配置
你的测试类继承ActionDispatch::IntegrationTest是正确的,这个类已经自动包含了路由助手模块,不需要额外添加配置。
内容的提问来源于stack exchange,提问作者Benjamin
相关产品推荐
相关产品推荐

