我是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 map和call被调用。
该页面尚不存在。这就是为什么我试图测试路线而不是响应。
提前致谢。
答案 0 :(得分:0)
我可以通过在调用url之前添加expection来解决这个问题,如下所示
expect(engine.constantize).to receive(:call).and_call_original
get @url