신속한 테스트 유닛 (여섯) 프레임을 사용 OHHTTPStubs 삼방 네트워크 요청

1, OHHTTPStubs 소개

        서버에서 준비가되지 않았거나이 지역 개발에 대한 데이터를 시뮬레이션해야 할 경우, OHHTTPStubs 좋은 테스트 및 개발 도구를 가속화 할 수있다. OHHTTPStubs 열악한 네트워크 환경에서 응용 프로그램의 동작을 감지하는 응용 프로그램을 테스트하고, 위조 된 네트워크 데이터 기록 단위 테스트를 사용하여 느린 네트워크 데이터 및 네트워크 시뮬레이션을 사용하여 위조

    OHHTTPStubsResponse는 문서, 이미지, 데이터 데이터 또는 JSON 객체로 지정 될 수 있습니다. 더 유연한

 

2, OHHTTPStubs 사용

1) 프레임 워크를 도입 cocopod

pod 'OHHTTPStubs/Swift',:configurations => ['Debug']
#debug的配置意思是只用于debug环境,在代码中也需要进行debug判断

2) 시험 파일 또는 신속한 도입

import OHHTTPStubs

3) 본 문서의 사용은 인 Alamofire의 망 프레임 + SwiftyJSON의 상기 분석 데이터 기록 처리 요구 및 응답에 의한 분석

동시에 도입 Alamofire 포드와 SwiftyJSON를 사용하는 것이 필요하다

다음과 같이 요청 코드는

func StubDataClick(_ sender: Any) {
        Alamofire.request("http://mywebservice.com", method: .get, parameters: nil, encoding: JSONEncoding.default).responseJSON { (respons) in
            print("response: ", respons.response as Any)
            print("result: ",respons.result)

            switch respons.result{
            case .success(let value):
                let json = JSON(value)
                 self.textView.text = json.rawString()
                print("JSON: ", json)
            case .failure(let error):
                 print("error: ",error)
                 self.textView.text = (error as! NSError).description
            }

        }
}

네트워크가 요청 응답을 차단하도록 구성 될 필요가 전에 4) 요청을 수행

여러 상황 설정이 있습니다 :

(1)로부터 리턴 데이터 결과를 정의

OHHTTPStubs.stubRequests(passingTest: { (request) -> Bool in
            return request.url?.host == "mywebservice.com"
        }) { (request) -> OHHTTPStubsResponse in
            let array = ["hello", "world"]
            return OHHTTPStubsResponse.init(jsonObject: array, statusCode: 200, headers: nil)
        }

인쇄 반환 결과 :

(2) 반환 프로젝트 JSON 형식의 파일 구성 (당신이 지원되는 형식으로 JSON 파일을 소유 할 수 있습니다)

OHHTTPStubs.stubRequests(passingTest: { (request) -> Bool in
            return request.url?.host == "mywebservice.com"
        }) { (request) -> OHHTTPStubsResponse in
            let stubPath = OHPathForFile("abbaData.json", type(of: self))
            return fixture(filePath: stubPath!, status: 200, headers: ["Content-Type":"application/json"])
        }

인쇄 결과 : 

(3) 느린 아날로그 네트워크

케이스 네트워크 속도가 느린 요청 응답 시간이 길고 느린 반환 데이터는

/*
         responseTime 可以指定具体的数值 例如3.0
         你也可以用枚举值来定义responseTime
         
         OHHTTPStubsDownloadSpeedGPRS   =    -7 =    7 KB/s =    56 kbps
         OHHTTPStubsDownloadSpeedEDGE   =   -16 =   16 KB/s =   128 kbps
         OHHTTPStubsDownloadSpeed3G     =  -400 =  400 KB/s =  3200 kbps
         OHHTTPStubsDownloadSpeed3GPlus =  -900 =  900 KB/s =  7200 kbps
         OHHTTPStubsDownloadSpeedWifi   = -1500 = 1500 KB/s = 12000 kbps
         */
        OHHTTPStubs.stubRequests(passingTest: { (request) -> Bool in
            return request.url?.host == "mywebservice.com"
        }) { (request) -> OHHTTPStubsResponse in
            let stubPath = OHPathForFile("abbaData.json", type(of: self))
            return fixture(filePath: stubPath!, status: 200, headers: ["Content-Type":"application/json"]).requestTime(1.0, responseTime: OHHTTPStubsDownloadSpeedWifi)
        }

인쇄 반환 결과 :

네트워크 오류 (4) 아날로그

OHHTTPStubs.stubRequests(passingTest: { (request) -> Bool in
            return request.url?.host == "mywebservice.com"
        }) { (request) -> OHHTTPStubsResponse in
            let error : NSError = NSError.init(domain: NSURLErrorDomain, code: 500, userInfo: ["describe":"netwoek is error"])
            return OHHTTPStubsResponse.init(error: error)
        }

인쇄 오류의 세부 사항은 반환됩니다

 

3. 결론

장점 :

1) 속도가 느린 네트워크의 시뮬레이션, 가난한 네트워크의 경우 응용 프로그램의 동작을 확인

2) 테스트 기록 수단, 상기 아날로그 데이터를 반환

이 독점적 API가 포함되어 있지 않기 때문에 3) 사용 OHHTTPStubs 응용 프로그램은, 애플 스토어에 제출 될 수있다.

4) OHHTTPStubsResponse는 문서, 이미지, 데이터 (Data) 또는 JSON 객체로 지정 될 수있다. 더 유연한

 

단점 :

배경은 시스템의 자신의 아이폰 OS에 의해 관리되는 사용자 지정 요청 NSURLProtocols 허용되지 않기 때문에 1) OHHTTPStubs 요청 된 데이터는 배경을 사용할 수 없습니다

2)OHHTTPStubs不能模拟数据上传

 

参考链接:

iOS网络请求模拟库OHHTTPStubs的介绍和使用

iOS模拟网络之OHHTTPStubs库的介绍与使用

추천

출처blog.csdn.net/lin1109221208/article/details/93051140