gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用测试数据库

转载 作者:行者123 更新时间:2023-11-28 20:04:54 25 4
gpt4 key购买 nike

我正在尝试填充我的 Rails 测试数据库,但遇到了问题。

我有一个脚本,我用它来休息、生成和填充我的开发数据库,​​它可以正常工作。基本上是这样的

namespace :db do
desc "Fill database with sample data"
task populate: :environment do
Rake::Task['db:reset'].invoke
--Create all my dummy data here---
end
end
end

然后我运行命令:

bundle exec rake db:populate
bundle exec rake db:test:prepare

第一个命令使用上述 rake 任务重置并填充我的数据库,但第二个命令仅重新创建我的数据结构并且不填充数据。

我这样做是为了让一些 RSPec 测试能够访问 - 但我想知道我是否在错误地处理这个问题?我的 TDD 测试数据库中不应该有任何测试数据(只有结构)吗?一切都应该总是从 Fixtures 运行吗?

最佳答案

根据我的经验,不依赖于运行 rake 任务或使用任何其他外部进程来填充测试数据是一种很好的做法。您应该在测试本身中加载任何数据,并在 spec/support 中创建帮助程序,以避免在必要时重复。

我见过各种加载测试数据的策略:放置在 lib 中的自定义种子类、fixtures(尽管 fixtures 在某些情况下可能很脆弱并且很痛苦),以及更重量级的解决方案,例如作为 factory_girl_rails 和制造 gem ,仅举几例。

至于 db:test:prepare,根据 Rails 指南,它只是“检查挂起的迁移并加载测试模式”;没有加载实际数据。

http://guides.rubyonrails.org/testing.html#preparing-your-application-for-testing

希望对您有所帮助!

关于ruby-on-rails - 在 Rails 中使用测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14310389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com