1

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

4

1 回答 1

0

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

于 2017-01-12T02:43:58.203 回答