创建用于测试的 HTTPCookieStorage
Create HTTPCookieStorage for testing
我正在尝试对我的一些网络代码进行单元测试。我正在尝试编写一个测试来验证来自给定 HTTPCookieStorage
的 HTTPCookie
s 实际上已添加到 URLRequest
headers.
所以,我需要一个 HTTPCookieStorage
里面有一个 HTTPCookie
。我尝试这样创建它:
let cookie = HTTPCookie(properties: [
.name: "name",
.value: "value",
.domain: ".example.com",
.path: "/",
.expires: Date(timeIntervalSinceNow: 10),
.comment: "Test cookie"
])!
let url = URL(string: "www.example.com")!
let cookieStorage = HTTPCookieStorage()
cookieStorage.cookieAcceptPolicy = .always
cookieStorage.setCookies([someCookie], for: url, mainDocumentURL: nil)
但此时 cookieStorage
仍然是空的..我也试过:
cookieStorage.setCookie(cookie)
这也忽略了 cookie..
为什么 cookie 被忽略,我如何创建一个 HTTPCookieStorage
带有可预测 cookie 的单元测试?
我建议使用 HTTPCookieStorage
的 shared
实例。另外,如果你使用 setCookie(_:)
它应该可以工作:
let cookie = HTTPCookie(properties: [
.name: "name",
.value: "value",
.domain: ".example.com",
.path: "/",
.expires: Date(timeIntervalSinceNow: 10),
.comment: "Test cookie"
])!
let cs = HTTPCookieStorage.shared
cs.setCookie(cookie)
print(cs.cookies!)
/*
[<NSHTTPCookie
version:0
name:name
value:value
expiresDate:'2021-09-30 10:08:16 +0000'
created:'2021-09-30 10:08:06 +0000'
sessionOnly:FALSE
domain:.example.com
partition:none
sameSite:none
path:/
isSecure:FALSE
path:"/" isSecure:FALSE comment:'Test cookie'
>]
*/
/**
@class NSHTTPCookieStorage
@discussion NSHTTPCookieStorage implements a singleton object (shared
instance) which manages the shared cookie store. It has methods
to allow clients to set and remove cookies, and get the current
set of cookies. It also has convenience methods to parse and
generate cookie-related HTTP header fields.
*/
使用HTTPCookieStorage.shared
或HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier identifier: String)
我正在尝试对我的一些网络代码进行单元测试。我正在尝试编写一个测试来验证来自给定 HTTPCookieStorage
的 HTTPCookie
s 实际上已添加到 URLRequest
headers.
所以,我需要一个 HTTPCookieStorage
里面有一个 HTTPCookie
。我尝试这样创建它:
let cookie = HTTPCookie(properties: [
.name: "name",
.value: "value",
.domain: ".example.com",
.path: "/",
.expires: Date(timeIntervalSinceNow: 10),
.comment: "Test cookie"
])!
let url = URL(string: "www.example.com")!
let cookieStorage = HTTPCookieStorage()
cookieStorage.cookieAcceptPolicy = .always
cookieStorage.setCookies([someCookie], for: url, mainDocumentURL: nil)
但此时 cookieStorage
仍然是空的..我也试过:
cookieStorage.setCookie(cookie)
这也忽略了 cookie..
为什么 cookie 被忽略,我如何创建一个 HTTPCookieStorage
带有可预测 cookie 的单元测试?
我建议使用 HTTPCookieStorage
的 shared
实例。另外,如果你使用 setCookie(_:)
它应该可以工作:
let cookie = HTTPCookie(properties: [
.name: "name",
.value: "value",
.domain: ".example.com",
.path: "/",
.expires: Date(timeIntervalSinceNow: 10),
.comment: "Test cookie"
])!
let cs = HTTPCookieStorage.shared
cs.setCookie(cookie)
print(cs.cookies!)
/*
[<NSHTTPCookie
version:0
name:name
value:value
expiresDate:'2021-09-30 10:08:16 +0000'
created:'2021-09-30 10:08:06 +0000'
sessionOnly:FALSE
domain:.example.com
partition:none
sameSite:none
path:/
isSecure:FALSE
path:"/" isSecure:FALSE comment:'Test cookie'
>]
*/
/**
@class NSHTTPCookieStorage
@discussion NSHTTPCookieStorage implements a singleton object (shared
instance) which manages the shared cookie store. It has methods
to allow clients to set and remove cookies, and get the current
set of cookies. It also has convenience methods to parse and
generate cookie-related HTTP header fields.
*/
使用HTTPCookieStorage.shared
或HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier identifier: String)