2

(私はこれに対する答えを見たと確信していますが、何分も掘った後はそれを見つけることができません。答えるのは簡単なはずです...)

動機

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か?

これにより、テストの作成が簡単になり、エラーが発生しにくくなります。

[編集:: controllerと:actionに一意にマップするには、HTTP動詞( get)とパス( )が必要であることに気付きましたが、問題はまだ残っています...]/posts/321

4

0 に答える 0