0
我想獲得一個Bill對象來執行測試。這是一個美國國會法案,我通過數據目錄中的rsync在xml中獲得。我的代碼採用賬單名稱,例如「h1.xml」,解析xml,然後從www.govtrack.us獲取賬單全文。所以,在我主要的應用程序,創造了一項法案Rails測試涉及一個對象,需要api更新
- 獲取法案名稱(如H1)(通過該方法DEF self.update_from_directory通配符)
def self.update_from_directory Dir.glob("#{Rails.root}/data/bills/small_set/*.xml").each do |bill_path| bill_name = bill_path.match(/.*\/(.*).xml$/)[1] b = Bill.find_or_create_by(:govtrack_name => bill_name) b.update_bill b.save! end end
- 更新法案
def update_bill file_data = File.new("#{Rails.root}/data/bills/#{self.govtrack_name}.xml", 'r') bill = Feedzirra::Parser::GovTrackBill.parse(file_data) if bill && (self.introduced_date.nil? || (bill.introduced_date.to_date > self.introduced_date)) self.congress = bill.congress self.bill_type = bill.bill_type self.bill_number = bill.bill_number ... and so on . . . until: get_bill_text
- 更新話單記錄與該法案文本
def get_bill_text bill_object = HTTParty.get("#{GOVTRACK_URL}data/us/bills.text/#{self.congress.to_s}/#{self.bill_type}/#{self.bill_type + self.bill_number.to_s}.html") self.bill_html = bill_object.response.body self.text_updated_on = Date.today Rails.logger.info "Updated Bill Text for #{self.ident}" end
我的目標很簡單,我想嘲笑整個法案的測試:
def setup @my_test_bill = Bill.new(:govtrack_id => "h1") @my_test_bill.update_bill end
我試圖讓webmock和錄像機的工作,但我可以找到的所有示例提供了一種方法來模擬特定的調用,並且我不想重新輸入一個全新的update_bill方法。
任何想法非常感謝。
添