0

名前空間を持つコントローラーをテストする仕様を書こうとしています。それを と呼びましょうAdmin::FooController。私のスペックは と呼ばれてadmin_foo_controller_spec.rbいます。仕様では、コントローラーのアクションを取得できるかどうかを確認するための非常に基本的な仕様を作成しようとしています。

describe "GET 'index'" do
  it "should be successful" do
    get 'index'
    response.should be_success
  end
end

しかし、代わりにエラーが発生します:

 Failure/Error: get 'index'
 No route matches {:controller=>"admin/foo"}

別のアクションについても、基本的に同じテストを行いましたが、応答が成功していないことがわかりました。実際の webapp では、これらの URL に問題なくアクセスできます。私が言及する必要があることの 1 つは、これは RESTful リソースではなく (1 つとして意味をなさない)、実際には関連する管理アクションのグループにすぎないことです。したがって、私の routes.rb では基本的に次のようになります。

namespace :admin do
  scope "foo" do
    match "action1" => "foo#action1"
    match "action2" => "foo#action2"
    match "/index" => "foo#settings"
    match "settings" => "foo#settings"
  end
end

私が間違っていることはありますか?特に私のような初心者にとっては、ネームスペースがレールに問題を引き起こしているようです。ありがとう!

4

1 に答える 1

2

あなたのルートでは、あなたの中にインデックスアクションがありません Foo コントローラーは「設定」を取得しようとします

describe "GET 'index'" do
  it "should be successful" do
    get 'settings'
    response.should be_success
  end
end

コントローラー仕様では、実際のルートではなく、コントローラーのアクションを定義する必要があります。統合テストでルートを試します。

于 2010-12-24T08:10:45.560 に答える