7

Rails3.2.6またはRspec2.11.0にアップグレードした後、私のスペックは次のようなルーティングエラーを表示し始めます。

  4) UsersController GET activate activation code not exist 
     Failure/Error: subject{ get :activate }
     ActionController::RoutingError:
       No route matches {:controller=>"users", :action=>"activate"}

各フックエラーの後にもあります

An error occurred in an after(:each) hook
  RSpec::Mocks::MockExpectationError: (#<EmailSubscriber[...]>).update_attributes({:enable=>true})
    expected: 1 time
    received: 0 times
  occurred at [...]/spec/controllers/users_controller_spec.rb:75:in `block (3 levels) in <top (required)>'

開発モードのアプリケーションは引き続き正常に実行されます。

4

2 に答える 2

7

Rspec2.11.0とRails3.2.6はどちらも、最新のJourney gem(1.0.4)を使用しています。いくつかの問題があり、明示的に前のバージョンにロックすることで、スペックエラーが消えます。

gem 'journey', '1.0.3'

アップデート

最近、Journey 1.0.4でRailsを3.2.11に更新しましたが、すべての仕様に合格しました。私のRspecは2.11.0です。したがって、Railsを更新するだけで、ジャーニーをダウンロックする必要はありません。

于 2012-07-13T08:35:39.743 に答える
2

機能テストでは、本番環境や開発環境よりも環境が厳しいようです。

後者の2つでは、パラメータ名は、一致/一致するルート定義を確認することによって決定されるため、事前に「知る」ことはできません。

ただし、テストでは、パラメーター名を明示的に指定します。これにより、環境をより厳しくすることができます。

その動作は、test-envをprod-envと可能な限り一致させるという原則から逸脱しているため、バグと見なし、それに応じて問題を報告しました(https://github.com/rails/journey/issues/59)。

今のところ問題を回避するには、パラメータ名がルートと完全に一致していることを確認してください。

提出された問題に関して結果が決定されるまで、それに応じたルートを追加することをお勧めします。そうすれば、バグが見つかって解決された場合は、コントローラーレベルで本番ロジックをいじる代わりに(すでに問題なく動作している)、ルートを再度削除する必要があります。

于 2013-02-08T18:02:25.410 に答える