所有调用的 OCMock 存根 class 方法

OCMock stub class method for all invocations

我有一个实用程序 class,其中包含一些 class 方法。

@interface DataValidator : NSObject

+ (BOOL)foo;

@end

class 的用法在其他 class 中,例如 NetworkManager、DBHandler 等。并且由于 Utility class 中没有实例方法,因此不需要any class 创建 Utility class 的实例。相反,他们直接像这样打电话

[Utility foo];

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

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

这仅在我直接从测试内部调用 [Utility foo] 时有效,但这对我来说没有用。

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

看起来 OCMock 3 有办法模拟 Class 方法: 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];