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

时间:2011-09-06 21:46:47

标签: ruby-on-rails testing activeresource

我有一个控制器在执行期间触发一个ActiveResource请求。该请求中包含一个id,它是作为我的控制器执行的一部分生成的(因此, / a / b / {my_id} /c.xml ,其中 my_id 是由控制器生成的值。

我不希望我的测试用例触发实际的实时请求,但我也不希望调用失败(我需要200响应)。

我看过HttpMock,这似乎是一个很好的解决方案,但它似乎不允许在respond_to块(例如)中允许通配符或正则表达式,因为生成的id是请求的一部分

有办法做到这一点吗?我一直在寻找,但我还没有看到任何东西,HttpMock文档根本没有提到它。

1 个答案:

答案 0 :(得分:0)

我建议使用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)