Hanami测试中Rake是否使用与主程序不同的数据库?
关于Hanami测试环境数据库的疑问解答
嘿,你猜得没错!Hanami 确实会为测试环境使用独立的数据库,这是框架默认遵循的最佳实践——毕竟没人想让测试数据污染自己正在开发的数据库对吧?
为什么会这样?
Hanami 会严格区分开发、测试、生产三个运行环境,每个环境都有独立的配置项,数据库配置也不例外。你可以去项目里的 config/database.yml 文件看看,里面应该会有三个环境的配置块:
development:对应你平时开发用的数据库,就是你之前操作的那个 SQLite 文件test:专门给测试用的独立数据库,通常文件名会带test后缀(比如db/test.sqlite3)production:部署到生产环境用的数据库
Rake任务和测试环境的关系
当你运行测试相关的 Rake 任务(或者直接运行测试套件)时,Hanami 会自动切换到 test 环境,加载对应的数据库配置。这就是为什么你在开发环境里创建的 reviews 数据,在测试里看不到——它们根本不在同一个数据库里!
验证小技巧
如果你想确认的话,可以试试这两步:
- 打开
config/database.yml,查看test段的数据库路径,找到对应的 SQLite 文件 - 运行测试相关的命令后,用
sqlite3命令行工具打开这个测试数据库,执行select * from reviews;,就能看到测试生成的数据(或者空表,取决于你有没有写测试)
内容的提问来源于stack exchange,提问作者ytg
相关产品推荐
相关产品推荐

