我正在尝试通过将SQLite3内存数据库用作应用程序的测试数据库来加速Rails应用程序的测试。我按照这篇博客文章中的说明进行操作。
在我的
我的所有测试都失败了,因为无法加载固定装置,如下所示:
初始化程序确实加载了数据库(如您可以从输出的第一行看到的那样),但由于某种原因,测试无法看到模式,可能是因为它正在查找错误的位置或者因为在测试开始时已经被清除。
有人以前见过这种情况吗?
在我的
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
初始化程序确实加载了数据库(如您可以从输出的第一行看到的那样),但由于某种原因,测试无法看到模式,可能是因为它正在查找错误的位置或者因为在测试开始时已经被清除。
有人以前见过这种情况吗?