首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OHHTTPStubs单元测试实现

OHHTTPStubs单元测试实现
EN

Stack Overflow用户
提问于 2018-07-09 20:16:56
回答 1查看 437关注 0票数 0

我试图正确地实现OHHTTPStubs,但遇到了一些麻烦。

我想做这个图书馆的工作。向URL发出请求并返回一个模拟的JSON响应。

这就是我如何设置它,但没有任何东西被正确地调用,存根甚至没有运行。

代码语言:javascript
复制
- (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]);

}

雪佛兰提供的答案是修改这一行:

代码语言:javascript
复制
[request.URL.host isEqualToString:@"http://www.myweb.com"];

代码语言:javascript
复制
[request.URL.host isEqualToString:@"www.myweb.com"];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 20:40:52

您的问题在于您的主机是www.myweb.com no http://www.myweb.com

代码语言:javascript
复制
...

[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];
}];
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51253391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档