gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:49 28 4
gpt4 key购买 nike

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

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

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


[更新]在 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)];

最佳答案

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

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

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

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com