Hod*_*son 9 nsurl ios xctest swift
我有以下Swift扩展 NSURL
public extension NSURL {
func getQueryItemValueForKey(key: String) -> String? {
guard let components = NSURLComponents(URL: self, resolvingAgainstBaseURL: false) else {
return nil
}
guard let queryItems = components.queryItems else { return nil }
return queryItems.filter {
$0.name == key
}.first?.value
}
}
Run Code Online (Sandbox Code Playgroud)
我正在为它编写单元测试,但我无法获得100%的代码覆盖率,因为我似乎无法NSURLComponents(URL: self, resolvingAgainstBaseURL: false)返回nil.据我所知,这需要一个格式错误的URL,但我正在努力创建一个.
我试过了:
let url = NSURL(string: "")let url = NSURL(string: "http://www.example")let url = NSURL(string: "http://www.exam ple.com")let url = NSURL(string: "http://www.example.com/?param1=äë?òú")还有一些我忘记了.我知道这可能是显而易见的事情,但此刻我迷失了.那么,如何在Swift中创建格式错误的URL?
小智 13
在我的研究中发现,您可以使用负端口号(可能有更多情况但不确定)生成NSURLComponents格式错误但不适用于NSURL的URL:
let example = "http://example.com:-80/"
let url = NSURL(string: example)
print("url:\(url)") //prints out url:Optional(http://example.com:-80/)
if let url = url {
let comps = NSURLComponents(URL: url, resolvingAgainstBaseURL: false)
print("comps:\(comps)") //prints out comps:nil
}
Run Code Online (Sandbox Code Playgroud)