• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 是否可以使用 OCMock stub NSProcessInfo?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:24:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想 stub [[NSProcessInfo processInfo] operatingSystemVersion] 以获取任何操作系统版本。

id processInfoMock = OCMClassMock([NSProcessInfo class]);
[OCMStub([processInfoMock operatingSystemVersion]) andReturnValue:NULL];
NSOperatingSystemVersion osVersion = [[NSProcessInfo processInfo] operatingSystemVersion];

但返回的是 iOS 模拟器的操作系统版本。是否可以 stub NSProcessInfo 方法?而且, stub Foundation 的类(class)是否合适?


[更新] 在 Erik 的建议下,问题解决了。我需要 stub processInfo 类方法以返回 NSProcessInfo 的模拟实例。这是测试通过的代码:

// 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)];



Best Answer-推荐答案


您必须通过 stub processInfo 类方法来确保实际使用了模拟。这显示在 OCMock 网站首页上标题为“为实例和类方法创建 stub ”的部分中。

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

OCMStub([processInfoMock operatingSystemVersion]).andReturn(NULL);

关于ios - 是否可以使用 OCMock stub NSProcessInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35144522/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap