【问题标题】:How to stub Active Resource?如何存根活动资源?
【发布时间】:2011-07-28 17:14:46
【问题描述】:
我的活动资源连接到一些愚蠢的外部服务,无论出于何种原因,该服务都需要一段时间才能响应。这有点太唠叨了。我想在开发过程中存根 Active Resource 以加快我的开发时间。
这是一件好事吗?我认为是这样。如果你不这么认为,请解释一下。
是否有一种机制可以根据环境配置文件中的开关(可能是您为此目的使用的任何 gem/插件)将其存根?
根据您的经验,您是如何做到这些的?
【问题讨论】:
标签:
ruby-on-rails-3
rubygems
ruby-on-rails-3.1
【解决方案1】:
我建议使用FakeWeb。我最近在一个项目中使用了它,它允许我注册一些带有预定义响应的外部 url。在您的测试设置中,您可以这样做:
FakeWeb.register_uri(:get, %r|users.xml|, :body => File.read("spec/factories/xml/users.xml"))
现在,每当活动资源请求 anyhost.com/users.xml(在测试环境中)时,您将立即获取您引用的文件的内容。我喜欢这种方法,因为当你测试一个模型时,你并不真的想测试外部服务。我会将该级别的测试留给集成测试。
这不会影响开发或生产环境,因此您可以照常使用愚蠢的外部服务。