如何为 HTTPURLResponse 返回 'nil'



我有以下方法用于从响应标头中检索cookie:

internal static func cookie(from response: HTTPURLResponse) -> HTTPCookie? {
    guard let url = response.url else { return nil }
    guard let headerFields = response.allHeaderFields as? HTTPHeaders else { return nil }
    let cookies = HTTPCookie.cookies(withResponseHeaderFields: headerFields, for: url)
    for cookie in cookies {
        if cookie.name == "connect.sid" { return cookie }
    }
    return nil
}

我正在创建单元测试来验证我的代码是否返回了适合适当方案的nil。但是,上述方法中我似乎无法有效测试的唯一部分是:

guard let url = response.url else { return nil }

在我的测试中,我创建了一个响应以传递到上述方法:

guard let response = HTTPURLResponse(url: url, statusCode: 200, httpVersion: nil, headerFields: responseHeaders) else { fatalError("Invalid response") }

由于 HTTPURLResponse 的初始值设定项需要一个非可选的URL,我似乎无法弄清楚如何使用其 url 属性的nil值测试响应。

有没有办法让我用nil url来测试这一点?

通过使用HTTPURLResponse()初始值设定项而不是传递参数,我能够为响应的url属性提供一个nil值。

相关内容

  • 没有找到相关文章

最新更新