Я пытаюсь заставить объект Билла выполнять тесты. Это законопроект конгресса США, который у меня есть в xml через rsync в каталоге данных. Мой код берет название счета, скажем, «h1.xml», анализирует xml и затем получает полный текст счета от www.govtrack.us. Итак, в моем основном приложении, чтобы создать счет
- Получить имя счета (например, 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 и vcr, но все примеры, которые я могу найти, предоставляют способ смоделировать конкретный вызов, и я не хочу перепечатывать совершенно новый метод update_bill.
Любые мысли с благодарностью.
Тим