Cómo crear deliberadamente una URL con formatting incorrecto en Swift

Tengo la siguiente extensión Swift en 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 } } 

Estoy escribiendo testings de unidad para ello, pero no puedo get una cobertura de código del 100%, ya que no parece poder get NSURLComponents(URL: self, resolvingAgainstBaseURL: false) para devolver nil . Por lo que entiendo, esto requiere una URL mal formada, pero estoy luchando para crear una.

Yo he tratado:

  • 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=äëīòú")

Y otros que perdí la pista. Sé que esto es probablemente algo evidente, pero estoy perdido en este momento. Entonces, ¿cómo creo una URL mal formada en Swift?

Como se puede encontrar en mi investigación, puede generar una url mal formada para los componentes NSURLC pero no para NSURL utilizando un número de puerto negativo (probablemente haya más casos, pero no estoy seguro):

 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 }