如何为HTTPURLResponse返回`nil`?

时间:2017-01-12 02:23:52

标签: nshttpurlresponse

我使用以下方法从响应标头中检索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来测试吗?

1 个答案:

答案 0 :(得分:0)

通过使用HTTPURLResponse()初始值设定项而不是传递参数,我可以为响应的nil属性设置url值。