ruby-on-rails – 为什么我的Rails测试没有看到我的内存中SQLite3数据库的内容?

ruby-on-rails – 为什么我的Rails测试没有看到我的内存中SQLite3数据库的内容?,第1张

概述我正在尝试通过使用SQLite3内存数据库作为应用程序的测试数据库来加速Rails应用程序的测试.我按照 blog post的说明进行 *** 作. 我在database.yml中的数据库配置如下所示: test: adapter: sqlite3 database: ":memory:" encoding: utf8 verbosity: quiet 我还按照建议创建了初始化程序: de @H_403_6@ 我正在尝试通过使用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:'endif in_memory_database?  ActiveRecord::Schema.verbose = false  puts "creating sqlite in memory database"  load "#{Rails.root}/db/schema.rb"end

我的所有测试都失败了,因为无法加载灯具,您可以看到:

creating sqlite in memory databaseLoaded suite test/unit/vendor_appliance_testStartedEFinished 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,以查看实际的对象更改.

如果您共享一个连接,您应该得到您期望的行为.

并且更快启动:-)

总结

以上是内存溢出为你收集整理的ruby-on-rails – 为什么我的Rails测试没有看到我的内存中SQLite3数据库的内容?全部内容,希望文章能够帮你解决ruby-on-rails – 为什么我的Rails测试没有看到我的内存中SQLite3数据库的内容?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存