所有调用的{OCMock存根类方法

时间:2015-12-10 12:13:31

标签: ios ocmock

我有一个带有一些类方法的Utility类。

@interface DataValidator : NSObject

+ (BOOL)foo;

@end

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

[Utility foo];

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

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

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

2 个答案:

答案 0 :(得分:1)

看起来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];

答案 1 :(得分:0)

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