我试图正确地实现OHHTTPStubs,但遇到了一些麻烦。
我想做这个图书馆的工作。向URL发出请求并返回一个模拟的JSON响应。
这就是我如何设置它,但没有任何东西被正确地调用,存根甚至没有运行。
- (void)testWithOHHTTP {
[OHHTTPStubs initialize];
[OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
return [request.URL.host isEqualToString:@"http://www.myweb.com"];
} withStubResponse:^OHHTTPStubsResponse*(NSURLRequest *request) {
NSDictionary* obj = @{ @"key1": @"value1", @"key2": @[@"value2A", @"value2B"] };
return [OHHTTPStubsResponse responseWithJSONObject:obj statusCode:200 headers:nil];
}];
NSURL *URL = [NSURL URLWithString:@"http://www.myweb.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
[OHHTTPStubs setEnabled:YES forSessionConfiguration:config];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
[request setHTTPMethod:@"GET"];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"#### Data: %@, Response: %@, Error: %@", data, response, error);
NSDictionary *dataJSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSLog(@"#### %@", dataJSON);
}];
[dataTask resume];
NSLog(@"All stubs: %@", [OHHTTPStubs allStubs]);
}雪佛兰提供的答案是修改这一行:
[request.URL.host isEqualToString:@"http://www.myweb.com"];至
[request.URL.host isEqualToString:@"www.myweb.com"];发布于 2018-07-09 20:40:52
您的问题在于您的主机是www.myweb.com no http://www.myweb.com。
...
[OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
return [request.URL.host isEqualToString:@"www.myweb.com"];
} withStubResponse:^OHHTTPStubsResponse*(NSURLRequest *request) {
NSDictionary* obj = @{ @"key1": @"value1", @"key2": @[@"value2A", @"value2B"] };
return [OHHTTPStubsResponse responseWithJSONObject:obj statusCode:200 headers:nil];
}];
...https://stackoverflow.com/questions/51253391
复制相似问题