ruby – 在测试之间擦除Cassandra DB(Rspec)
发布时间:2020-12-17 02:32:36 所属栏目:百科 来源:网络整理
导读:我正在运行涉及Cassandra数据库中的数据的rspec测试.在测试之间擦除/清理数据库的最佳做法是什么?对于我的mongo数据,我正在使用 DatabaseCleaner,我正在寻找一个等效的Cassandra.我目前正在我的spec_helper.rb中执行以下操作,但它非常慢,所以我正在寻找更好
我正在运行涉及Cassandra数据库中的数据的rspec测试.在测试之间擦除/清理数据库的最佳做法是什么?对于我的mongo数据,我正在使用
DatabaseCleaner,我正在寻找一个等效的Cassandra.我目前正在我的spec_helper.rb中执行以下操作,但它非常慢,所以我正在寻找更好的解决方案.谢谢!
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 解决方法
老问题,但我找到了有用的要点,也许它也会帮助其他人(我使用
cequel gem来访问Cassandra):
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |