是否可以使用OCMock存根NSProcessInfo?

庆太

我想存根[[NSProcessInfo processInfo] operatingSystemVersion]以获取任何OS版本。

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

但是返回了iOS模拟器的OS版本。是否可以对NSProcessInfo方法进行存根?而且,对Foundation的类进行存根是否合适?


[更新]在Erik的建议下,此问题已解决。我需要存根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)];
埃里克·多恩伯格(Erik Doernenburg)

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

顺便说一句,为什么要混合使用不同的句法样式?为什么不只是写

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以使用OCMock测试是否调用了超类吗?

来自分类Dev

我可以使用OCMock测试是否调用了超类吗?

来自分类Dev

<%if%>是否可以使用整数?

来自分类Dev

OCMock存根isSelected属性

来自分类Dev

使用太多PictureBox,是否可以使用For?

来自分类Dev

是否可以使用Bootstrap使iframe响应?

来自分类Dev

是否可以使用CMake构建Boost?

来自分类Dev

是否可以使用pyOpenSSL设置subjectAltName?

来自分类Dev

是否可以使用宏生成结构?

来自分类Dev

是否可以使用Goutte解析JSON?

来自分类Dev

是否可以重写NOT IN查询以使用索引?

来自分类Dev

是否可以使用通配符SAN证书?

来自分类Dev

是否可以使用wincrypt进行HMAC?

来自分类Dev

jQuery .not(find())或-是否可以使用?

来自分类Dev

是否可以使用JoinSqlBuilder进行分页?

来自分类Dev

网页上是否可以使用swf?

来自分类Dev

是否可以使用循环填充jstree?

来自分类Dev

是否可以使用NSTextAttachment图像动画?

来自分类Dev

是否可以使用指针文字?

来自分类Dev

是否可以使用DOMDocument拆分HTML?

来自分类Dev

Vec是否可以使用折痕?

来自分类Dev

是否可以使用Kiba进行查找

来自分类Dev

是否可以使用getClic()进行getX()?

来自分类Dev

检查是否可以使用iAd

来自分类Dev

是否可以使用for循环和mutate()?

来自分类Dev

Fsharp是否可以使用窄类型?

来自分类Dev

是否有可以使用的“ GenerateJwt”方法?

来自分类Dev

是否可以使用if语句删除整数?

来自分类Dev

是否可以使用->指定功能类型