提交 5edbdca5 编写于 作者: F Fumiaki MATSUSHIMA

Fix random failure on system test with ajax

If application has ajax, browser may begin request after rollback.
`teardown_fixtures` will be called after `super` on `after_teardown`
so we must call `Capybara.reset_sessions!` before `super`

https://github.com/rails/rails/blob/b61a56541aecd7ac685d4f19d943177a3f1b465a/activerecord/lib/active_record/fixtures.rb#L857
上级 e1a72fef
......@@ -11,8 +11,8 @@ def before_setup
def after_teardown
take_failed_screenshot
super
Capybara.reset_sessions!
super
end
end
end
......
......@@ -576,6 +576,34 @@ def test_warnings
capture(:stderr) { run_test_command("test/models/warnings_test.rb -w") })
end
def test_reset_sessions_before_rollback_on_system_tests
app_file "test/system/reset_session_before_rollback_test.rb", <<-RUBY
require "application_system_test_case"
class ResetSessionBeforeRollbackTest < ApplicationSystemTestCase
def teardown_fixtures
puts "rollback"
super
end
Capybara.singleton_class.prepend(Module.new do
def reset_sessions!
puts "reset sessions"
super
end
end)
test "dummy" do
end
end
RUBY
run_test_command("test/system/reset_session_before_rollback_test.rb").tap do |output|
assert_match "reset sessions\nrollback", output
assert_match "1 runs, 0 assertions, 0 failures, 0 errors, 0 skips", output
end
end
private
def run_test_command(arguments = "test/unit/test_test.rb")
Dir.chdir(app_path) { `bin/rails t #{arguments}` }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册