我正在使用azure API端点。 ....azure-api.net/...
。当我尝试使用Charles代理查看HTTP请求/响应时,HTTP响应为空。关闭代理时请求有效。
为了自动化测试的目的,我想拦截请求并模拟响应。
我可以使用Charles代理查看其他HTTP端点到其他服务器。所以我相信azure有一些特别的东西阻止了请求的完成。
我正在使用标准的iOS网络代码
NSURL *url = [NSURL URLWithString:@"https://MyDomain.azure-api.net/a/b/2?subscription-key=myKey"];
[[[NSURLSession sharedSession] dataTaskWithRequest:[NSURLRequest requestWithURL:url]
completionHandler:
^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@, error: %@", [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding], error);
;
}] resume];
以下是Charles Proxy的截图。连接请求后没有响应。
答案 0 :(得分:0)
为了拦截请求并返回虚假回复,您可以使用OHHTTPStubs
要启用它,您应该在从Xcode调试时记录响应或使用文档。
在执行测试之前,请致电
stub = [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
return [request.URL.absoluteString isEqualToString:@"https://MyDomain.azure-api.net/a/b/2?subscription-key=myKey"];
}
withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) {
NSString *fixture = OHPathForFileInBundle(@"fakeResponse.json", nil);
return [OHHTTPStubsResponse responseWithFileAtPath:fixture
statusCode:200
headers:@{@"Content-Type":@"text/json"}];
}];
执行测试后,您应该致电
[OHHTTPStubs removeStub:stub];
“fakeResponse.json”必须是仅添加到测试目标的文件,您可以使用不同的JSON
文件进行不同的测试。例如,您可以传递带有错误或空内容的JSON
来测试您的应用程序是否按照您希望的方式运行。