【问题标题】:Sinatra - Test config.ru mappingSinatra - 测试 config.ru 映射
【发布时间】:2016-05-21 23:41:26
【问题描述】:

我是 ruby​​ 和 sinatra 的新手。我在 config.ru 中有一个带有以下映射的 sinatra 应用程序

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 映射和调用。

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

提前致谢。

【问题讨论】:

  • 你遇到了什么错误?

标签: ruby rspec sinatra cucumber


【解决方案1】:

我可以通过在调用 url 之前添加期望来解决这个问题,如下所示

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多