我有以下方法用于从响应标头中检索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
值。