1

我想测试一个发出 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 上设置期望以验证请求是否正在发出?

4

1 回答 1

0

模拟 NSURLProtocol 对我来说没有意义。NSURLProtocol 用于测试以创建对某些请求的预设响应,无需模拟它(您不想测试系统如何与之交互)。该项目使用 NSURLProtocol,如果您想使用这种方法而不是直接测试 NSURLConnectionDelegate 实现的纯单元测试,它可能对您有用。

于 2014-01-30T16:58:04.477 回答