2016-11-04 117 views
0

我正在为一个调用多个http请求到外部服务的方法编写单元测试。有没有办法为RSpec HTTP存根使用级联规则?

它首先通过调用索引的路线,说“http://api.com/things

然后它通过索引中的各元素,并调用“显示路线”,说这是“http://api.com/things/123

你看, “显示”路线末尾的/123唯一的区别。

现在我有一个存根索引路线。

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things.*/ 
    ).to_return(<something>) 

问题是,这会拦截对“show”路由的调用。

我想为“show”路线做一个不同的模拟。我想不必深入正则表达式来做到这一点。

有没有一种方法可以像在Sinatra或Rails中路由工作那样设置http mock - 换句话说,如果文件中有较高的匹配,那么较低的匹配不会被击中?

回答

0

正则表达式并不复杂,并且是互斥的,所以应该可以正常工作。

对于指数

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things$/ 
    ).to_return(<something>) 

的演出

WebMock::API.stub_request(
     :get, 
     /.*api\.com\/things\/\d/ 
    ).to_return(<something>) 
+0

鉴于我的问题的信息你的答案是正确的。我想这是我的错,因为没有显示我的实际应用程序代码,但我不得不改变这一点,使其工作。 'to_return'可以占用一个块(它通过url),所以在那里,我做了一些像'if url.include?(“123”) else '。 –

+0

嗯,是的,你的请求是针对'show'与'index'的不同模拟,但这很酷,只要你有解决方案。 – SteveTurczyn

相关问题