5

TestUnit で Spork と Capybara をセットアップしようとしていますが、test.rb の構成の問題が発生しています。

問題は、Spork を常にリセットしなくても、テストの実行時にモデルの変更を反映できるように、Spork が config.cache_classes を false に設定する必要があることです。

一方、Capybara では、config.cache_classes を true に設定する必要があるようです。そうしないと、統合テストが機能しないようです。

これについて考えられる解決策/説明を探しています。これは TestUnit 内にのみ存在するものですか、それともおそらくバグなので、そのように報告する必要がありますか? どんな助けでも大歓迎です!

4

2 に答える 2

3

これに似たアプローチを取ることをお勧めします。主に行う必要があるのは、config.cache_classes を true に設定することですが、実行のたびに Spork にモデルと依存関係を強制的にリロードさせます。

Spork.each_run do
  ActiveSupport::Dependencies.clear
  ActiveRecord::Base.instantiate_observers
end if Spork.using_spork?

これにより、Capybara で cache_classes が true になることが期待されますが、テスト実行の間にモデルとオブザーバーをリロードすることもできます。

于 2011-06-10T17:32:09.957 に答える
1

スポークとキュウリで同様の問題に遭遇しました。私が見つけた解決策は次のとおりです。

config.cache_classes = (ENV['DRB'] == 'true' ? false : true)

spork は DRB 環境を設定します。これがこれを解決する最もエレガントな方法だとは思いませんが、カピバラが環境変数を設定する場合、それを使用できますか?

于 2011-09-02T21:29:57.937 に答える