(我确定我已经看到了答案,但经过几分钟的挖掘后却找不到它。应该很容易回答......)
在控制台中,您可以使用路径参数调用get
方法,例如:
app.get posts_path(321)
这会调用ActionDispatch::Integration::RequestHelpers#get
,它将“/ posts / 321”转换为适当的控制器以及操作和参数,例如: {:controller => “posts”,:action => “show”,:id => “321”}。
但你不能在控制器测试中这样做。要获得相同的效果,您需要:
get :show, :id => "321"
这是因为get
方法是由ActionController::TestCase#get
定义的,它期望已经解析出动作和参数。
我可以在手动填写的地方编写我的测试:controller,:action和任何参数,但这似乎是引入错误的好方法。
是否有方法将字符串解析(例如调用posts_path(321)
)到适当的:controller,:action和参数,适合传递给ActionController::TestCase#get
?
这将使编写测试更简单,更不容易出错。
[编辑:我意识到你需要HTTP动词(get
)以及路径(/posts/321
)来唯一地映射到:controller和:action,但问题仍然存在。 ..]