ruby-on-rails – 为什么我的Rails测试没有看到我的内存中SQLite
发布时间:2020-12-17 02:17:33 所属栏目:百科 来源:网络整理
导读:我正在尝试通过使用SQLite3内存数据库作为应用程序的测试数据库来加速Rails应用程序的测试.我按照 blog post的说明进行操作. 我在database.yml中的数据库配置如下所示: test: adapter: sqlite3 database: ":memory:" encoding: utf8 verbosity: quiet 我还
我正在尝试通过使用SQLite3内存数据库作为应用程序的测试数据库来加速Rails应用程序的测试.我按照
blog post的说明进行操作.
我在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 初始化程序确实加载了数据库(正如您可以从输出的第一行看到的那样),但由于某种原因,模式对于测试是不可见的,因为它看起来在错误的位置或因为它已被时间擦除测试开始了. 有人见过这个吗? 解决方法
看看有关共享连接的信息:
http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/ sqllite维护每个连接的内存数据库.活动记录使用连接池,当您运行测试时,它使用不同的连接.您可以在各个点检查连接的对象ID,以查看实际的对象更改. 如果您共享一个连接,您应该得到您期望的行为. 并且更快启动:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- PostgreSQL连接Oracle数据库
- objective-c – 从Xcode 3 Broke Unit Tests升级
- 在学react时候找不到static/js/bundle.js
- oracle – 使用提示进行查看?
- flash_player_9_security 学习
- DALFactory出现"未能加载文件或程序集“Flas
- ruby-on-rails – 可以在Ruby 2.4上运行Rails 4.
- ruby-on-rails – $:.unshift(File.expand_path
- ruby-on-rails-3 – 在heroku上的therubyracer错
- c#单元测试 – 重载方法测试的命名约定
热点阅读