Макет внешнего объекта API с помощью rails3 - PullRequest
2 голосов
/ 14 июня 2011

Я хочу использовать макет / заглушку:

@the_bill = GovKit::OpenCongress::Bill.find_by_idents("112-s368").first

для использования в моих тестах.

, который возвращает следующий объект, который я хотел бы исправить для целей моих тестов:

--- !ruby/object:GovKit::OpenCongress::Bill 
bill_type: s
co_sponsors: 
- !ruby/object:GovKit::OpenCongress::Person {}

id: 68340
introduced: 1297836000
most_recent_actions: 
- result: 
  created_at: "2011-02-17T07:45:50Z"
  govtrack_order: 
  amendment_id: 
  text: Read twice and referred to the Committee on Agriculture, Nutrition, and Forestry.
  date: 1297836000
  how: 
  id: 287979
  vote_type: 
  type: BillAction
  roll_call_id: 
  action_type: action
  datetime: "2011-02-16T00:00:00Z"
  where: 
  bill_id: 68340
  roll_call_number: 
- result: 
  created_at: "2011-02-17T07:45:49Z"
  govtrack_order: 
  amendment_id: 
  text: 
  date: 1297836000
  how: 
  id: 287978
  vote_type: 
  type: BillAction
  roll_call_id: 
  action_type: introduced
  datetime: "2011-02-16T00:00:00Z"
  where: 
  bill_id: 68340
  roll_call_number: 
number: 368
plain_language_summary: 
recent_blogs: []

Я пробовал Factory_girl (не могу этого сделать, не объект на основе модели), Fabrication (все те же проблемы) и OpenStruct, возможно, возможно, но возникли проблемы с преобразованием yaml в OpenStruct и получением макета вправильное место.

Сейчас я делаю вызов API в своих тестах, а не то, что я хочу.Я думаю, что webmock - это мое решение, но я не смог найти в документации, как просто загрузить простой объект.

1 Ответ

5 голосов
/ 04 июля 2011

Попробуйте VCR для макетирования API. У меня был точно такой же вопрос около 6 месяцев назад, и только недавно я обнаружил эту библиотеку. Он делает именно то, что вам нужно, кеширует объекты для последующего тестирования, но также может автоматически обновлять их через регулярные промежутки времени. Пока что это лучшее решение, которое я нашел для этого.

...