我使用以下方法从响应标头中检索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
的{{1}}值的url
1}}属性。
我可以通过nil
url
来测试吗?
答案 0 :(得分:0)
通过使用HTTPURLResponse()
初始值设定项而不是传递参数,我可以为响应的nil
属性设置url
值。