2016-08-07 9 views
0

私は私の問題を絞り込むために非常にシンプルなレール5プロジェクト設定している。このプロジェクトでは https://github.com/benedikt-voigt/capybara_js_demoRails 5、Minitest、Capybara JS(Selenium)でDBをクリーニングするには?

をカピバラJSで行うデータ突然変異は、Railsのことでも、私が追加されたデータベースクリーナーでもない、削除されません。 http://brandonhilkert.com/blog/7-reasons-why-im-sticking-with-minitest-and-fixtures-in-rails が、これは唯一の備品のためではなく、外のスレッドカピバラ試験により行われ、突然変異のために働く:

次の偉大なブログにはDatabaseCleanerが必要とされていないことを、主張して​​います。 データベースクリーナーを追加しましたが、これもまた作業が必要でした。

誰でもサンプル設定がありますか?

答えて

0

あなたのテストを見てみると、DatabaseCleanerがクリーンアップした後に実際にデータが追加されているため、データが残っていると言います。 click_onコールは非同期に発生するため、assert_no_contentコールが発生したときに、アプリケーションがまだリクエストを処理していない、またはページがまだ変更されていないことがあります。また、現在のページに 'データベースが消去されます。その間にアプリでクリックが処理され、クリーニングが行われた後に新しいデータが作成されます。あなたは、クリック後のページに表示されるコンテンツを待つ/チェックする必要がある - のようなものを

page.assert_text('New Foo Created') 

あなただけが既にページが変更されている知っていれば何のコンテンツがありませんアサートされなければならない、またはあなたが期待しています現在のページから消えるもの。

+0

トムを見に感謝をそれで。私はそれを試してアサーションを変更しましたが、これで問題は解決しません。問題は、作成されたオブジェクトがDBから削除されないことです。テストスイートを実行した後でも、このデータはDBに残っています。 – Ben

0

ここで説明するように私は1

class ActiveRecord::Base 
    mattr_accessor :shared_connection 
    @@shared_connection = nil 

    def self.connection 
    @@shared_connection || ConnectionPool::Wrapper.new(:size => 1) { retrieve_connection } 
    end 
end 
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection 

にDB接続を設定することで、今、問題を解決: https://mattbrictson.com/minitest-and-rails

を、私はここで働くレポをアップロード: https://github.com/benedikt-voigt/capybara_js_demo_working

関連する問題