Я пытаюсь ускорить тесты для приложения Rails, используя базу данных SQLite3 в памяти в качестве тестовой базы данных для приложения.Я следовал инструкциям в этом сообщении блога .
Моя конфигурация базы данных в database.yml
выглядит следующим образом:
test:
adapter: sqlite3
database: ":memory:"
encoding: utf8
verbosity: quiet
Я также создал инициализатор, как рекомендовано:
def in_memory_database?
Rails.env == "test" and
ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLiteAdapter ||
ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLite3Adapter and
Rails.configuration.database_configuration['test']['database'] == ':memory:'
end
if in_memory_database?
ActiveRecord::Schema.verbose = false
puts "creating sqlite in memory database"
load "#{Rails.root}/db/schema.rb"
end
Все мои тесты не пройдены, поскольку приборы не могут быть загружены, как вы можете видеть:
creating sqlite in memory database
Loaded suite test/unit/vendor_appliance_test
Started
E
Finished in 0.070079 seconds.
1) Error:
test_the_truth(VendorApplianceTest):
ActiveRecord::StatementInvalid: Could not find table 'advertisers'
1 tests, 0 assertions, 0 failures, 1 errors
Инициализатор загружает базу данных (как вы можете видеть из первогострока вывода), но по какой-то причине схема не видна тестам, либо потому, что она выглядит не в том месте, либо потому, что была стерта к моменту начала тестов.
Кто-нибудь видел это раньше