Dieses Problem trat in meiner Testumgebung auf und wurde durch die Tatsache verursacht, dass jeder Test in eine eigene Transaktion eingeschlossen war.
Ich habe das Juwel database_cleaner verwendet und es so konfiguriert, dass Tests NICHT in eine Transaktion eingeschlossen werden, wenn sie Javascript verwenden. Um das Problem zu lösen, habe ich js: true
zu jeder Spezifikation hinzugefügt , die dieses Problem verursacht hat. (Auch wenn in den Spezifikationen kein Javascript verwendet wurde, war dies der bequemste Weg, um sicherzustellen, dass die Tests nicht in eine Transaktion eingebunden werden. Ich bin mir jedoch sicher, dass es weniger hackartige Möglichkeiten gibt, dies zu tun.)
Als Referenz finden Sie hier die Datenbankdatenbank-Konfiguration von spec/support/database_cleaner.rb
:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with :deletion
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :deletion
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
Wenn Sie sich nicht mit database_cleaner sind, dann ist wahrscheinlich der Grund , warum die Tests in Transaktionen verpackenden würde wäre, dass die use_transactional_fixtures
Option eingestellt ist true
in spec/spec_helper.rb
. Versuchen Sie es auf false zu setzen.
json
? Aktualisiere es auf PSQL 9.4 und benutze esjsonb
. Problem gelöst!