Внедрение OHHTTPStubs Unit Test
Я пытаюсь правильно реализовать 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]);
}
Ответ, предоставленный Kevinosaurio, состоял в том, чтобы изменить эту строку:
[request.URL.host isEqualToString:@"http://www.myweb.com"];
в
[request.URL.host isEqualToString:@"www.myweb.com"];
1 ответ
Решение
Ваша проблема в том, что вашим хостом является 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];
}];
...