2016-05-17 7 views
0

Rails 2アプリをRails 4に移行する手助けをしています。 Rails 2アプリにはテストはありません。2つの異なるRailsアプリケーションでコントローラテストを実行します

もちろん、Rails 4アプリが動作することを確認するテストが必要ですが、テストをRails 2の構文で記述し、テストをRails 4に移行するのは苦労しません。現在RSpec他のプロジェクトでは

私はそれらをRails 4に機能テストとして記述し、Capybara.app_hostを使用して実行中のRails 2アプリケーションインスタンスに要求を再ルーティングすることを考えました。問題は、アプリケーションがAPIであり、CapybaraがAPIをテストするためのものではないということです。

RSpecコントローラのテストを別のサーバインスタンスにルーティングする方法はありますか?

+0

私はそれほど信じていませんが、他の人がチャイムに参加するかもしれません。しかし、私はあなたがRails 4のテストを書いて、それを使ってやるべきだと思います。新しいアプリが必要なだけ正確に動作する場合、古いアプリの機能はどうして重要なのですか? – RichardAE

+0

新しいバージョンに移行する前に古いバージョンでテストを書く1つの理由は、古いバージョンの要件が十分に理解されておらず、古いバージョンをテストする際に検出されることです。 (私は実際の質問に対しても良い答えはありません) –

+0

あなたのコメントをありがとうございます。私たちはもう一度プロジェクトを取り上げ、解決策があると思います。すぐに回答を投稿します。 – danielmbarlow

答えて

0

コメントのお返事ありがとうございます。

私は計画があると思います。私たちは古いプロジェクトでキュウリとキュウリのアピステップを実行しようとしましたが、古い宝石のバージョンを一緒にうまく組み合わせることは難しい作業であることに気付きました。

私が今試している解決策は、RSpec 1.3を使用してspec/requestsフォルダを作成し、そこにコントローラテストを追加することです。

私は投稿からこの考えをhttp://matthewlehner.net/rails-api-testing-guidelines/から受けました - ありがとうマシュー。私はRSpec 2まで要求仕様を見ていないので、コントローラーテストをintegrate_viewsを使った統合テストにかなり近づけさせてから、コントローラーから返された本体の内容を確認してください。

expect(..)ヘルパーを含めると、Rails 2プロジェクトの#toメソッドから#shouldメソッドを呼び出してオブジェクトを返し、Rails 4プロジェクトを移植するときにそれを削除することができます。

関連する問題