5

我可以存根/验证一个类方法,但我在定义宏时遇到了困难。我正在尝试测试我的一种方法调用 DDLogInfo。

它在 CocoaLumberjack 源代码中是这样定义的

#define DDLogInfo(frmt, ...)    LOG_MAYBE(LOG_ASYNC_ENABLED, LOG_LEVEL_DEF, DDLogFlagInfo,    0, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__)

谢谢!

4

1 回答 1

1

所有标准DDLog宏都调用+[DDLog log:level:flag:context:file:function:line:tag:format:],因此使用 OCMock,您将验证DDLogInfo是由以下方式调用的:

- (void)testMethodCallsDDLogInfo {
    id mockDDLog = OCMClassMock([DDLog class]);

    [obj methodThatCallsDDLogInfo];

    OCMVerify([mockDDLog log:YES level:DDLogLevelAll flag:DDLogFlagInfo context:0 file:[OCMArg anyPointer] function:[OCMArg anyPointer] line:58 tag:[OCMArg any] format:[OCMArg any]]);
}

不幸的是,使用这种策略,您必须对多个值进行硬编码,因为 OCMock 无法指定通用的非指针参数。

于 2015-05-09T03:36:13.193 回答