9

人々がルートの適切な/徹底的なテストをどのように考えているのか興味があります。私が一緒に働いている人は、どのように標準的であっても、routes ファイル内のすべてのルートをアサートしたいと考えているようです。これは時間の無駄だと思いますが、おそらく私は間違っていて、これには私が気づいていない価値があります.

ルーティングに価値を見出しているケースがいくつかあります。GET 要求と POST 要求の両方に応答するアクションがまだいくつかありますが、それらを取り除くつもりでした。ラムダ式などのクレイジーな制約はありませんが、もしそうならテストする価値があるようです。

しかし、通常のリソース定義の場合は?

resources :foo, only: [:index, :show]

これらのルートの両方が存在するというアサーションがあり、それらが GET であり、正しいコントローラー/アクションに移動することをアサーションします。それには何か意味がありますか?この時点では、Rails をテストしているだけのように感じます。

少し関連する質問ですが、私はリソースルートを上記のように定義することを好みます (only: [:index, :show]パーツを使用)。resources :fooそのコントローラーにインデックス/表示アクションしかない場合、ルートファイルでのみ定義することに影響はありますか?

おそらく、より多くの時間やメモリを使用しているように思えますが、それはどういうわけか、セキュリティ上の懸念や、私が気付いていない本当に悪いことですか?

4

2 に答える 2

4

ルートをテストして、許可したいルートが開いていることを確認しますが、シャットダウンしたいルートが機能しないようにします。ルーティングの仕様を、許可されたルート、許可されていないルート、およびカスタム ルートの 3 つのコンテキストに分割しました。

たとえば、rspec を使用して

describe SessionsController do
  describe "routing" do
    context "permitted" do
      it "routes to #create" do

        expect(post "sessions").to route_to("sessions#create")

      end
      ...
    end
    context "custom routes" do
      it "routes 'login' to #new" do

        expect(get "/login").to route_to("sessions#new")

      end
      ...
    end
    context "invalid routes" do
      it "does not route to #edit" do

        expect(get "/sessions/edit").not_to be_routable

      end
      ...
    end
  end
end
于 2013-08-08T03:17:57.520 に答える