RSpec,FactoryGirl和ActiveRecord测试没有导轨

时间:2012-12-07 19:48:44

标签: gem rspec2 factory-bot

我正在构建一个独立的gem,您可以在这里查看源代码: https://github.com/mabounassif/facebook_event_fetcher.git

使用我当前的设置,我无法在不首先设置测试数据库的情况下使用FactoryGirl进行测试。 “准备”我的测试数据库的正确方法是什么?

我想到的解决方案是创建一个db:test:准备rake任务。基本上,它删除test.sqlite3文件(如果存在),然后创建一个新文件并使用正确的表设置迁移数据库。 起初它似乎是一个干净的解决方案,但是当我运行rake任务时我得到了ActiveRecord NotConnected,而且我必须在Rakefile中设置连接似乎很麻烦,特别是我已经在spec_helper中完成了。 RB。这似乎是重复和不洁净的。

任何人都可以提示我应该如何进行吗?

1 个答案:

答案 0 :(得分:0)

我终于选择在Rakefile中再次设置ActiveRecord连接。 这是我的最终设置,对于那里的某个人来说可能会派上用场:

https://github.com/mabounassif/facebook_event_fetcher

这一切的多汁部分都是rake文件:

namespace :db do
  desc "Migrate the database through scripts in lib/generators/facebook_event_fetcher/install/templates. Target specific version with VERSION=x"
  task :prepare => :environment do
    ActiveRecord::Migration.verbose = true
    ActiveRecord::Migrator.migrate('lib/generators/facebook_event_fetcher/install/templates', nil)
  end

  task :environment do
    File.delete('db/test.sqlite3') if File.exist?('db/test.sqlite3')
    ActiveRecord::Base.establish_connection(YAML.load_file("config/database.yml"))
    ActiveRecord::Base.logger = Logger.new(File.open('db/database.log', 'a')) 
  end
end