【问题标题】:Unit tests with NSURLSession使用 NSURLSession 进行单元测试
【发布时间】:2023-03-11 16:10:01
【问题描述】:

我想为使用共享NSURLSession,尤其是NSURLSessionDataTask 下载数据的方法编写单元测试。基本上,我希望目标方法无需互联网连接即可接收模拟响应/数据。

模拟这些组件的不那么显眼的方式是什么?我正在考虑用模拟响应和数据填充NSURLCache,但我觉得这对NSURLSessionNSURLSessionDataTask 的工作方式有太多假设。还有其他建议吗?

【问题讨论】:

    标签: ios macos unit-testing nsurlsession nsurlcache


    【解决方案1】:

    我最近使用OHHTTPStubs 来模拟回复。

    您只需在测试之前注册存根(自述文件中的示例):

    [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
        return [request.URL.host isEqualToString:@"mywebservice.com"];
    } withStubResponse:^OHHTTPStubsResponse*(NSURLRequest *request) {
        // Stub it with our "wsresponse.json" stub file
        return [OHHTTPStubsResponse responseWithFileAtPath:OHPathForFileInBundle(@"wsresponse.json",nil)
            statusCode:200 headers:@{@"Content-Type":@"text/json"}];
    }];
    

    在内部,它使用NSURLProtocol 拦截请求并将它们存根。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2015-05-28
      • 2012-05-23
      • 2010-11-30
      • 2010-12-31
      相关资源
      最近更新 更多