国产一区二区精品久久_蜜桃狠狠狠狠狠狠狠狠狠_午夜视频精品_激情都市一区二区

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > 每天一劑Rails良藥之Extracting Test Fixtures From Live Data

每天一劑Rails良藥之Extracting Test Fixtures From Live Data
2010-01-14 07:09:06  作者:  來(lái)源:

 

Rails做單元測(cè)試時(shí),我們自己手動(dòng)去創(chuàng)建所有的fixtures會(huì)是個(gè)噩夢(mèng),有沒(méi)有什么好的方案呢?
我們可以利用數(shù)據(jù)庫(kù)里已有的數(shù)據(jù),寫(xiě)一個(gè)rake tast來(lái)把數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制出來(lái)到Y(jié)AML文件里:
CreateFixturesFromLiveData/lib/tasks/extract_fixtures.rake
Java代碼 復(fù)制代碼
  1. desc 'Create YAML test fixtures from data in an existing database.   
  2. Defaults to development database. Set RAILS_ENV to override.'   
  3.   
  4. task :extract_fixtures => :environment do  
  5.   sql = "SELECT * FROM %s"  
  6.   skip_tables = ["schema_info"]   
  7.   ActiveRecord::Base.establish_connection   
  8.   (ActiveRecord::Base.connection.tables - skip_table).each do |table_name|   
  9.     i = "000"  
  10.     File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml"'w'do |file|   
  11.       data = ActiveRecord::Base.connection.select_all(sql % table_name)   
  12.       file.write data.inject({}) {|hash, record|   
  13.         hash["#{table_name}_#{i.succ!}"] = record   
  14.         hash   
  15.       }.to_yaml   
  16.     end   
  17.   end   
  18. end  

好了,現(xiàn)在我們運(yùn)行rake extract_fixtures,則test/fixtures/目錄下將生成每個(gè)表的數(shù)據(jù)的yml文件

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢