2010-08-01 51 views
4

有没有办法模拟出Curb的Easy.perform方法进行单元测试?我用它来打击Facebook的图形API,并且没有一个http模拟库似乎支持Curb。模拟出Curl :: Easy.perform? (在路边)

这里最好的办法是什么?

+0

您使用什么测试框架? (Test :: Unit,RSpec,other?) – 2010-08-01 17:20:16

回答

0

我真的认为fakeWeb是虚假网络电话的好方法;无论您使用哪种HTTP库,您都只需指定要接收的响应文本和代码。

描述如下:

FakeWeb是Ruby的伪造网页 请求帮助。它工作在全球 水平,没有从github repository修改代码或 写广泛存根

例子:

FakeWeb.register_uri(:get, "http://example.com/test1", :string => "Hello World!") 

Net::HTTP.get(URI.parse("http://example.com/test1")) 
=> "Hello World!" 

Net::HTTP.get(URI.parse("http://example.com/test2")) 
=> FakeWeb is bypassed and the response from a real request is returned 
+0

是的,fakeweb很棒,但是默认的curb安装将使用Wrap Curl,而不是使用Net:HTTP,所以Fakeweb将无法拦截这些调用。我在测试SOAP服务之类的时候遇到了同样的问题,并且使用SOAP-ui来构建模拟结果 – Doon 2010-08-02 13:41:41

+0

@Doon ......你说得对!每天学些新东西。和路边支持是http://github.com/chrisk/fakeweb/issues#issue/10 – 2010-08-02 13:47:59

+0

上的问题我只是想包括不支持路边支持的想法(通过Gemfile,因为这是一个轨道3测试应用程序),试图强制它重新使用Net :: HTTP。我认为它会起作用,但我已经有了模拟服务,而soap-ui给了我更好的选择,以便在调用中提供不同的数据。所以我放弃了,回到了编码。唯一的缺点是,如果我忘记开始模拟,我会得到很多错误。但我可以忍受它。 – Doon 2010-08-02 19:41:05