我有一个控制器,它在执行期间触发一个ActiveResource请求。该请求中包含的id是作为控制器执行的一部分生成的(因此,/a/b/{my_id}/c.xml,其中my_id是由控制器生成的值)。
我不希望我的测试用例触发实际的活动请求,但我也不希望调用失败(我需要200响应)。
我看了看HttpMock,这似乎是一个很好的解决方案,但它似乎不允许在respond_to块(例如)内使用通配符或正则表达式,这是必要的,因为生成的id是请求的一部分。
有办法做到这一点吗?我一直在寻找,但我还没有看到任何东西,HttpMock文档根本没有提到它。
我建议要么用FakeWeb模拟web服务调用,要么在ActiveResource层本身使用传统的模拟。
require 'fakeweb'
FakeWeb.register_uri(:get, "http://example.com/test1", :body => "Hello World!")
Net::HTTP.get(URI.parse("http://example.com/test1"))
=> "Hello World!"
…或者用摩卡嘲讽:
MyActiveResource.stubs(:create => true)