2012-10-04 41 views
4

我正在运行涉及Cassandra db中数据的rspec测试。这里用于在测试之间擦拭/清洁db的最佳实践是什么?对于我的mongo数据,我正在使用DatabaseCleaner,并且正在寻找Cassandra等价物。我目前在我的spec_helper.rb中执行以下操作,但速度非常慢,所以我正在寻找更好的解决方案。谢谢!在测试之间擦拭Cassandra DB(Rspec)

config.before :each do 
    ['column1', 'column2'].each do |name| 
     begin 
     $cassandra.drop_column_family(name) 
     rescue 
     next 
     ensure 
     cf = Cassandra::ColumnFamily.new(keyspace: 'db_name', name: name, comparator_type: 'TimeUUIDType') 
     $cassandra.add_column_family(cf) 
     end 
    end 

回答

3

老问题,但我发现有用的要点吧,也许它会帮助别人过(我使用cequel宝石访问卡桑德拉):

https://gist.github.com/elado/c95a4ffa952809865ee8

# in spec_helper.rb 

RSpec.configure do |config| 
    records = [] 

    config.before :suite do 
    Cequel::Record.descendants.each do |klass| 
     klass.after_create {|r| records << r } 
    end 
    end 

    config.after :each do 
    records.each(&:destroy) 
    records.clear 
    end 

    def clean_cequel! 
    Cequel::Record.descendants.each { |klass| Cequel::Record.connection.schema.truncate_table(klass.table_name) } 
    end 

    config.before :suite do 
    clean_cequel! 
    end 

    config.after :suite do 
    clean_cequel! 
    end 
end