如何防止我的功能测试用例创建ActiveResource调用?



我有一个控制器,它在执行期间触发一个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)

最新更新