【问题标题】:OCMock stub class method for all invocations所有调用的 OCMock 存根类方法
【发布时间】:2015-12-10 12:13:31
【问题描述】:

我有一个带有一些类方法的实用程序类。

@interface DataValidator : NSObject

+ (BOOL)foo;

@end

该类的使用在其他类中,比如NetworkManager,DBHandler等。由于Utility类中没有实例方法,因此任何类都不需要创建Utility类的实例。而是像这样直接拨打电话

[Utility foo];

在为 NetworkManager/DBHandler 编写测试时,是否可以模拟 Utility 和存根 foo,以便对其进行的所有调用都返回模拟响应。

如果我在 NetworkManager 类测试中模拟 Utility 类,NetworkManager 代码仍然调用原始方法而不是存根方法。

这仅在我从测试内部直接调用 [Utility foo] 时才有效,但这在我的情况下没有用。

【问题讨论】:

    标签: ios ocmock


    【解决方案1】:

    看起来 OCMock 3 有一种模拟类方法的方法: http://ocmock.org/reference/#mocking-class-methods 该页面的示例:

    id classMock = OCMClassMock([SomeClass class]);
    OCMStub([classMock aClassMethod]).andReturn(@"Test string");
    // result is @"Test string"
    NSString *result = [SomeClass aClassMethod];
    

    【讨论】:

      【解决方案2】:

      我无法做到这一点。我最终做的是将类方法转换为实例方法,然后模拟它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-16
        相关资源
        最近更新 更多