ios - 是否可以使用 OCMock stub NSProcessInfo?
<p><p>我想 stub<code>[ operatingSystemVersion]</code> 以获取任何操作系统版本。</p>
<pre><code>id processInfoMock = OCMClassMock();
) andReturnValue:NULL];
NSOperatingSystemVersion osVersion = [ operatingSystemVersion];
</code></pre>
<p>但返回的是 iOS 模拟器的操作系统版本。是否可以 stubNSProcessInfo 方法?而且, stubFoundation 的类(class)是否合适?</p>
<hr/>
<p>[更新]
在 Erik 的建议下,问题解决了。我需要 stub<code>processInfo</code> 类方法以返回 NSProcessInfo 的模拟实例。这是测试通过的代码:</p>
<pre><code>// Prepare fakeVersion instead of NULL.
NSOperatingSystemVersion fakeVersion = {0,0,0};
// Mock NSProcessInfo.
id processInfoMock = OCMClassMock();
// Stub processInfo class method to return the mock instance.
) andReturn:processInfoMock];
// Stub operatingSystemVersion instance method to return fakeVersion.
) andReturnValue:OCMOCK_VALUE(fakeVersion)];
// Another solution using OCMPartialMock.
// Partial mock for NSProcessInfo instance.
id processInfo = ;
id processInfoPartialMock = OCMPartialMock(processInfo);
// Stub operatingSystemVersion instance method to return fakeVersion.
) andReturnValue:OCMOCK_VALUE(fakeVersion)];
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您必须通过 stub<code>processInfo</code> 类方法来确保实际使用了模拟。这显示在 OCMock 网站首页上标题为“为实例和类方法创建 stub ”的部分中。</p>
<p>顺便说一句,为什么要混合不同的句法风格?为什么不直接写</p>
<pre><code>OCMStub().andReturn(NULL);
</code></pre></p>
<p style="font-size: 20px;">关于ios - 是否可以使用 OCMockstubNSProcessInfo?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/35144522/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/35144522/
</a>
</p>
页:
[1]