首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有可能用NSProcessInfo和OCMock进行存根吗?

有可能用NSProcessInfo和OCMock进行存根吗?
EN

Stack Overflow用户
提问于 2016-02-02 03:27:45
回答 1查看 186关注 0票数 2

我想要存根[[NSProcessInfo processInfo] operatingSystemVersion]采取任何操作系统版本。

代码语言:javascript
运行
复制
id processInfoMock = OCMClassMock([NSProcessInfo class]);
[OCMStub([processInfoMock operatingSystemVersion]) andReturnValue:NULL];
NSOperatingSystemVersion osVersion = [[NSProcessInfo processInfo] operatingSystemVersion];

但是返回了iOS模拟器的操作系统版本。是否有可能对NSProcessInfo方法进行存根?那么,它适合存根基金会的类吗?

根据埃里克的建议,这个问题得到了解决。我需要对processInfo类方法进行存根,以返回NSProcessInfo的模拟实例。下面是测试通过的代码:

代码语言:javascript
运行
复制
// Prepare fakeVersion instead of NULL.
NSOperatingSystemVersion fakeVersion = {0,0,0};
// Mock NSProcessInfo.
id processInfoMock = OCMClassMock([NSProcessInfo class]);
// Stub processInfo class method to return the mock instance.
[OCMStub([processInfoMock processInfo]) andReturn:processInfoMock];
// Stub operatingSystemVersion instance method to return fakeVersion.
[OCMStub([processInfoMock operatingSystemVersion]) andReturnValue:OCMOCK_VALUE(fakeVersion)];

// Another solution using OCMPartialMock.
// Partial mock for NSProcessInfo instance.
id processInfo = [NSProcessInfo processInfo];
id processInfoPartialMock = OCMPartialMock(processInfo);
// Stub operatingSystemVersion instance method to return fakeVersion.
[OCMStub([processInfoPartialMock operatingSystemVersion]) andReturnValue:OCMOCK_VALUE(fakeVersion)];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-03 22:59:54

您必须确保通过阻塞processInfo类方法来实际使用模拟。在OCMock网站的首页标题为“创建存根和类方法”一节中显示了这一点。

顺便问一下,为什么要混合不同的句法风格?为什么不直接写

代码语言:javascript
运行
复制
OCMStub([processInfoMock operatingSystemVersion]).andReturn(NULL);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35144522

复制
相关文章

相似问题

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