gpt4 book ai didi

ruby assert_equal 未定义的方法 'downcase' 为 0..13 :Range

转载 作者:数据小太阳 更新时间:2023-10-29 08:57:05 25 4
gpt4 key购买 nike

我有一个名为 token wrapper 的模块,其中有一个方法 getToken :

def Tokenwrapper.getToken
uri = URI.parse("[URL REDACTED]/api/authenticate")
request = Net::HTTP::Post.new(uri)
request.basic_auth("email@domain.com", "pass")
request.content_type = "application/json"
request["Accept"] = "application/json"
req_options = {
use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
response
end

当我尝试使用以下断言对其进行测试时:

assert_equal("#<Net::HTTPOK:",Tokenwrapper.getToken[0..13])

我收到这个错误:

NoMethodError: undefined method 'downcase' for 0..13:Range

我没有手动调用 downcase 方法,而且我看不出有任何理由让 ruby​​ 自动执行此操作。为什么会发生这种情况,我该如何进行测试?

老实说,我对 HTTP API 响应以及该网络领域的运作方式知之甚少,因此非常感谢任何资源以及此问题的答案。

最佳答案

响应对象有一个 [] 方法 provides access to a header from the response .当您尝试执行 getToken[0..13] 时,这是实际被调用的方法。

这个 [] 期待像 response['Content-Type'] 这样的调用,并在按顺序传入的值上使用 downcase不区分大小写地处理 header 名称。

如果您想检查响应的字符串表示中的前几个字符,您可以将响应转换为字符串并进行比较,如下所示:

assert_equal("#<Net::HTTPOK:",Tokenwrapper.getToken.to_s[0..13])

或者,您可以对 HTTP 状态代码使用断言,例如

assert_equal(200, Tokenwrapper.getToken.code)

关于ruby assert_equal 未定义的方法 'downcase' 为 0..13 :Range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204198/

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