我有以下用于从响应标头中检索 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
,我似乎无法弄清楚如何使用其属性的nil
值来测试响应。url
有没有办法让我用一个来测试这个nil
url
?