首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCMock和AFHTTPRequestOperationManager

OCMock和AFHTTPRequestOperationManager
EN

Stack Overflow用户
提问于 2014-08-25 20:22:12
回答 1查看 319关注 0票数 1

我试图使用AFHTTPRequestOperationManager为AFNetworking的OCMock创建一个模拟

这就是我得到的:

代码语言:javascript
复制
id mockRequestManager = OCMClassMock([AFHTTPRequestOperationManager class]);
OCMStub([mockRequestManager manager]).andReturn(mockRequestManager);
[myObject methodThatUsesAFHTTPRequestOperationManager];

我以前对其他单身者(例如[NSNotificationCenter defaultCenter])做过这种事情,但是在使用AFHTTPRequestOperationManager时,当从[myObject methodThatUsesAFHTTPRequestOperationManager]调用[AFHTTPRequestOperationManager manager]时,我不会返回被模拟的对象。我总是要回AFHTTPRequestOperationManager实例对象。

我是不是遗漏了什么?是否有一些AFHTTPRequestOperationManager的实现细节妨碍了它的工作?

编辑

因此,在查看了AFHTTPRequestOperationManager代码之后,发现它实际上不是一个单例,而是一个返回新AFHTTPRequestOperationManager对象的类方法。但是,我仍然不明白为什么顽固的类方法不返回模拟对象而不是创建一个新的对象。

EN

回答 1

Stack Overflow用户

发布于 2014-08-29 11:26:07

就像你说的不是独生子女。您可以将其插入;查看一下this answer

使用注入优于单粒子。如果您不想注入典型的对象(如[NSNotificationCenter defaultCenter] of [NSUserDefaults standardUserDefaults] ),那么您可以做些什么,而不是嘲笑和固执共享实例访问器,只需在测试中使用真正的对象。例如,您可以在测试中侦听该通知,而不是测试您正在发布一个模拟defaulCenter的特定通知。我更喜欢这个解决方案,因为它避免使用模拟,我们可以说这更可靠,因为您正在结合实际的通知中心来测试您的对象。有些人可能会说,这样的测试将是一个综合测试,但在这种情况下,国际海事组织是不值得加以区分的。

关于如何使用共享实例访问器,我不习惯使用新的OCMock语法,但这不应该有问题,请检查如何使用OCMock对类方法进行存根。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25493764

复制
相关文章

相似问题

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