かなり単純な問題は、(私は考えを持っていると思います)はありませんが、私はいくつかの問題抱えている:Railsの3.1.0.rc6/RSpecの2.6.0でRailsのRSpecのルーティング:でテストアクション:除いては、ルート
を、私は私の製品 'リソースのルーティングをテストしようとしている、次のようにルーティングさ:
resources :products, :except => [:edit, :update]
有効なアクションのためのルーティングは動作しますが、私は編集および更新ルートががないことを確認したいです呼び出し可能。ここで私がしようとしているものです:
it "does not route to #edit" do
lambda { get("/products/1/edit") }.should raise_error
end
Failure/Error: lambda { get("/products/1/edit") }.should raise_error expected Exception but nothing was raised # ./spec/routing/products_routing_spec.rb:11:in `block (3 levels) in '
...とはまだありません、私は
it "does not route to #edit" do
get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
を実行したときに、私は
Failure/Error: get("/products/1/edit").should_not route_to("products#edit", :id => "1") ActionController::RoutingError: No route matches "/products/1/edit"
ここで何が起こっているか任意のアイデアを得ますか?私はこれがかなりシンプルでなければならないと思っていますが、私はそれを理解できないようです。
優勝者がいます。 Strange - 私はRails 2が "エラーを起こす"ラムダを扱うのに使われたと思うが、明らかに3.1ではない。 be_routableメソッドも認識していませんでした - 多くのありがとう。 – PlankTon
非常に便利です!ただ一つの簡単な注記:上記のテストは/spec/routing/xxxx.rbになければならない、またはそれはエラーで失敗するでしょう。たとえば、/spec/requests/xxxx.rbにこれを入れることはできません –