次のテストは、初めて ( の後rake db:test:prepare
) 合格しましたが、失敗して以降の実行でエラーが発生しました。
Capybara::ElementNotFound: css "#sale_payment_btn" が見つかりません
require "test_helper"
DatabaseCleaner.strategy = :transaction
class SaleFeatureTest < Capybara::Rails::TestCase
include Warden::Test::Helpers
Warden.test_mode!
self.use_transactional_fixtures = false
setup do
login_as users(:admin), scope: :user
Capybara.current_driver = :selenium #:webkit
DatabaseCleaner.start
end
teardown do
DatabaseCleaner.clean
Warden.test_reset!
end
test "Sale" do
visit(new_sale_path) # create new sale and redirect to it
assert page.has_css?('#sale_payment_btn') # gave error at second time
find(:css, '#sale_payment_btn').click # this create payment
end
クロムでセレンを使用したので、販売のIDを見ることができました。後続のテストでも ID が同じであることに気付きました。すなわち980190963
私の理論はそれです
database_cleaner
期待どおりに機能していません。(ファイルに DB クリーニング sql コマンドが表示されtest.log
ますが、データがデータベースに残っていることがわかりました)visit
レンダリングされていないため(最初の実行でセールがすでに行われているため)、新しい作成はしません(ここで@sale
述べたように、ミニテストを使用します)。#sal_payment_btn
payment
私は今、半日髪を引っ張っています。私が試してみました
webkit
運転者- 異なるクリーニング戦略
truncation
、deletion
2回目の実行ではまだテストに合格できません。手動テストでは問題なく動作しています。
私は何をどこで間違えましたか?
PS私は次の宝石を使用しています
minitest-rails-capybara
selenium-webdriver
chromedriver-helper
database_cleaner
minitest-around
pg
私は以下を読みました