gpt4 book ai didi

ruby-on-rails - 如何在 Rails 测试中轻松解析带参数的 URL?

转载 作者:数据小太阳 更新时间:2023-10-29 06:32:31 24 4
gpt4 key购买 nike

我有一些代码将 return_to URL 嵌入到我要测试的重定向(如 OpenID)中:

def test_uses_referrer_for_return_to
expected_return_to = 'http://test.com/foo'
@request.env['HTTP_REFERER'] = expected_return_to
get :fazbot
# @response.redirected_to looks like http://service.com?...&return_to=[URI-encoded version of URL above]&...
encoded_return_to = (something_here)[:return_to]
assert_equal expected_return_to, URI.unencode(encoded_return_to)
end

它是一个 Rails ActionController::TestCase,所以我可以访问各种辅助方法;我就是找不到合适的。

当然我可以使用 URI.parse 获取 URL 的参数部分,然后将其拆分为 /&|?/ 然后再次拆分为 '=',但我希望这已经为我完成了。另外,如果我在 URL 转义或参数解析中遗漏了一些晦涩的规则怎么办? 必须ActionPackActiveSupport 中有一些东西可以做到这一点,但我找不到它。

谢谢:)

最佳答案

CGI::parse(querystring) 将查询字符串解析为散列。然后,CGI::unescape(string) 将撤消值中的任何 URL 编码。

或者,如果您使用的是最新的基于 Rack 的 Rails 版本,则可以使用 Rack::Utils.parse_queryRack::Utils.unescape,并且想要超现代。

我不知道有任何特定于 Rails 的辅助方法包装了这些实用函数,但它们使用起来非常简单,而且 CGI 或 Rack 已经加载到 Rails 环境中了。

关于ruby-on-rails - 如何在 Rails 测试中轻松解析带参数的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com