我想测试一个发出GET请求的方法。
这是一个人为的例子:
- (void)GET:(NSString *)URLString;
我不想担心此方法的实现细节(例如模拟,设置期望,然后验证依赖关系),我宁愿只能测试是否发出了GET请求。
我相信我可以用NSURLProtocol做到这一点,但到目前为止我的尝试都没有成功。
例如,使用OCMock:
id mockURLProtocol = (NSURLProtocol *)[OCMockObject mockForClass:[NSURLProtocol class]];
[NSURLProtocol registerClass:mockURLProtocol];
[[mockURLProtocol expect] canInitWithRequest:[OCMArg any]];
[MYClass GET:@"test"];
[mockURLProtocol verify];
[mockURLProtocol stopMocking];
[NSURLProtocol unregisterClass:mockURLProtocol];
由于永远不会调用canInitWithRequest,因此上述测试失败。
如何设置对NSURLProtocol的期望以验证是否正在发出请求?
答案 0 :(得分:0)
模拟NSURLProtocol对我来说没有意义。 NSURLProtocol用于测试以创建对某些请求的预设响应,不需要模拟它(您不想测试系统如何与之交互)。 This project使用NSURLProtocol,如果您想使用此方法而不是直接测试NSURLConnectionDelegate实现的纯单元测试,它可能对您有用。