用rails3模拟外部API对象

问题描述

| 我想模拟/存根: @the_bill = GovKit :: OpenCongress :: Bill.find_by_idents(\“ 112-s368 \”)。first 在我的测试中使用。 它返回以下我出于测试目的要修复的对象: ---!ruby / object:GovKit :: OpenCongress :: Bill bill_type:s 共同赞助者: -!ruby / object:GovKit :: OpenCongress :: Person {} id:68340 简介:1297836000 most_recent_actions: -结果:   created_at:\“ 2011-02-17T07:45:50Z \”   govtrack_order:   ification_id:   文字:阅读两次并提交给农业,营养和林业委员会。   日期:1297836000   怎么样:   id:287979   投票类型:   类型:BillAction   roll_call_id:   action_type:动作   日期时间:“ 2011-02-16T00:00:00Z”   哪里:   bill_id:68340   roll_call_number: -结果:   created_at:\“ 2011-02-17T07:45:49Z \”   govtrack_order:   ification_id:   文本:   日期:1297836000   怎么样:   id:287978   投票类型:   类型:BillAction   roll_call_id:   action_type:已介绍   日期时间:“ 2011-02-16T00:00:00Z”   哪里:   bill_id:68340   roll_call_number: 数:368 plain_language_summary: 最近博客:[] 我已经尝试过Factory_girl(无法做到,不是基于模型的对象),Fabrication(仍然存在相同问题)和OpenStruct,但可能无法完成,但无法将yaml转换为OpenStruct并在正确的位置进行模拟。 现在,我正在测试中进行api调用,而不是我想要的。我以为webmock是我的解决方案,但我在文档中找不到如何加载简单对象的方法。     

解决方法

        尝试使用VCR模拟API。我大约在6个月前有一个完全相同的问题,只是最近才发现这个库。它完全满足您的需求,将缓存对象以供以后测试,但也可以定期自动刷新它们。到目前为止,它是我为此找到的最佳解决方案。