Swift 单元测试异步HTTP请求函数

Swift 单元测试异步HTTP请求函数,swift,xcode,unit-testing,asynchronous,Swift,Xcode,Unit Testing,Asynchronous,我试图用XCode编写单元测试,但我遇到了异步函数的问题。主要思想是检查接收到的JSON的长度 我尝试测试的函数(存在于someVC类中): func getSomeCount(url:String){ 请求(url,方法:.get).responseJSON{(响应)在 if response.result.issucess{ self.someJSON=JSON(response.result.value!) self.length=self.someJSON!.count }否则{ sel

我试图用XCode编写单元测试,但我遇到了异步函数的问题。主要思想是检查接收到的JSON的长度

我尝试测试的函数(存在于someVC类中):

func getSomeCount(url:String){
请求(url,方法:.get).responseJSON{(响应)在
if response.result.issucess{
self.someJSON=JSON(response.result.value!)
self.length=self.someJSON!.count
}否则{
self.length=0
打印(“错误\(字符串(描述:response.result.Error)))
}
}
}
测试结果如下所示:

func testAPIResponse(){
        let someVC = SomeVC()
        someVC.getSomeCount(url: "http:\\www.someapi.com")
        XCTAssertEqual(someVC.length, 1234)
}

我知道我应该使用期望值,但不知道在这种情况下如何正确地实现它们。测试失败,说明0不等于1234。如何正确地完成它?

您(a)需要为您的方法提供一个
@转义
完成处理程序,并且(b)使用
xTestExpection
并实现完成处理程序中的期望。另请参阅。在为网络API编写单元测试时,我们有时会“模拟”服务器响应,以便我们的单元测试独立于外部服务器、网络等。请参阅。谢谢@Rob,看起来我需要进一步深入研究一下。