2012-10-04 74 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