我想为使用共享 NSURLSession 的方法编写单元测试,特别是 NSURLSessionDataTask 下载数据。基本上,我希望目标方法在不需要互联网连接的情况下接收模拟响应/数据。
I'd like to write unit tests for methods that use the shared NSURLSession, and in particular, NSURLSessionDataTask to download data. Basically, I would like the target methods to receive mock responses/data without requiring an internet connection.
模拟这些组件的不那么不引人注目的方法是什么?我想用模拟响应和数据填充 NSURLCache ,但我觉得这假设过多的 NSURLSession 和 NSURLSessionDataTask 工作。还有其他任何建议吗?
What is the less unobtrusive way of mocking these components? I was thinking of populating NSURLCache with mock responses and data but I feel this assumes too much of how NSURLSession and NSURLSessionDataTask work. Any other suggestions?
推荐答案我用 OHHTTPStubs 最近模拟回复。
I've used OHHTTPStubs to mock responses lately.
您只需在测试前注册存根(例如来自README):
You just register the stub before you test (example from the README):
[OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) { return [request.URL.host isEqualToString:@"mywebservice"]; } 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 拦截请求和存根。
Internally, it uses NSURLProtocol to intercept the requests and stub them.
更多推荐
使用NSURLSession进行单元测试
发布评论