我正在使用Rspec开发一个用于单元测试的Rails应用程序。
几周前,Rspec在执行'rake spec‘时会自动将数据库迁移到最新版本,但现在它不会自动执行,我必须自己实现所有的功能。
这是在测试环境中发生的,因为我的开发数据没有显示出来。
是我的错吗?我没有改变任何东西,我想:)
提前谢谢。
发布于 2010-06-03 13:41:49
通常,我所做的是使用一个别名命令,该命令可以同时运行迁移和准备测试数据库。
rake db:migrate && rake db:test:prepare在.bashrc中,只需像这样创建一个别名命令,然后在需要时运行migrate_databases即可。
alias migrate_databases='rake db:migrate && rake db:test:prepare'发布于 2014-03-11 17:14:02
我对Rails 4的解决方案是:
在spec/spec_helper.rb中或测试环境初始化代码中的任何位置:
# Automigrate if needs migration
if ActiveRecord::Migrator.needs_migration?
ActiveRecord::Migrator.migrate(File.join(Rails.root, 'db/migrate'))
end更新:正如道里安在评论中指出的那样,你不需要单独检查是否有任何未决的迁移,因为ActiveRecord::Migrator.migrate已经在幕后完成了这项工作。所以你可以有效地使用这一行:
ActiveRecord::Migrator.migrate(File.join(Rails.root, 'db/migrate'))发布于 2015-01-16 03:57:19
Rails 4.1向前版本,您可以使用:
ActiveRecord::Migration.maintain_test_schema!添加到你的spec_helper.rb或rails_helper.rb的顶部,你就可以开始了。More info here。
https://stackoverflow.com/questions/2898099
复制相似问题