辛纳屈 - 测试 config.ru 映射



我是Ruby和sinatra的新手。我有一个 sinatra 应用程序,config.ru 中的映射如下

map "/xyz" do
run lambda { |env|
    if env["PATH_INFO"] != "/"
      A::B.call(env)
    else
      C::D.call(env.merge("PATH_INFO" => "/xyz/"))
    end
  }
end

我正在尝试编写一个测试来检查是否调用了正确的应用程序。

When I visit the URL "<url>" 
And  "<engine>" is used
Examples:
| url       | engine  | 
| /xyz/     | C::D    | 
| /xyz/abc/ | A::B    |

而在步骤

step ":engine is used" do |engine|
  expect(engine.constantise).to receive(:call)
end

但是这一步失败了。有没有更好的方法来测试这一点?我尝试调试它并确认 sinatra 地图和调用被调用。

该页面尚不存在。这就是为什么我试图测试路由而不是响应。

提前谢谢。

我能够通过在调用 url 之前添加期望来解决此问题,如下所示

expect(engine.constantize).to receive(:call).and_call_original
get @url

最新更新