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不能模拟数据上传
参考链接: