OCMock 中的存根类方法

Posted

技术标签:

【中文标题】OCMock 中的存根类方法【英文标题】:Stubbing Class Method in OCMock 【发布时间】:2015-03-25 16:40:26 【问题描述】:
- (void)testStringExample 

    // Given
    NSString *testString = @"Test";

    id mock = OCMClassMock([NSString class]);
    OCMStub([mock stringWithContentsOfFile:OCMOCK_ANY
                              encoding:NSUTF8StringEncoding
                                 error:nil]).andReturn(testString);

    // When
    NSString *result = [NSString stringWithContentsOfFile:@"SomeFilePath"
                                             encoding:NSUTF8StringEncoding
                                                error:nil];

    // Then
    XCTAssertEqualObjects(result, testString);

如您所见,我一直在尝试使用 OCMock 存根 NSString 类方法,但似乎没有任何运气。测试失败,表明“(null)”不等于“Test”,但我不确定为什么没有正确调用模拟方法。我在 ios 上使用 OCMock 3.1.2。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

阅读更多内容后,我怀疑我遇到了与以下帖子中显示的类似的问题:

How to mock class method (+)?

我随后采用了 Christopher Pickslay 在上面的帖子中建议的方法,效果很好。

【讨论】:

以上是关于OCMock 中的存根类方法的主要内容,如果未能解决你的问题,请参考以下文章

正在测试的类的 OCMock 存根类方法

不能在 Xcode 5.0 中使用 OCMock 2.1+ 存根类方法

如何使用 ocmock 在基于类的方法上存根返回值

OCMock: OCMPartialMock 对象调用实际方法而不是存根

在 OCMPartialMock 上存根类方法?

OCMock 不能存根分类方法