有没有办法为RSpec HTTP存根使用级联规则?

时间:2016-11-04 00:13:35

标签: ruby-on-rails ruby unit-testing rspec

我正在为一个调用多个http请求到外部服务的方法编写一个单元测试。

首先调用索引路径,例如“http://api.com/things

然后它遍历索引中的每个元素并调用'show route',说它是“http://api.com/things/123

你看,唯一的区别是“show”路线末尾的/123

现在我有索引路径的存根。

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

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

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

有没有办法可以像在Sinatra或Rails中使用相同的方式设置http模拟 - 换句话说,如果文件中的匹配值更高,则较低的匹配将不会被命中?

1 个答案:

答案 0 :(得分:0)

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

索引

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

为节目

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