kreek
kreek

Reputation: 8834

How to stub CocoaLumberjack or NSLog with OCMockito

I can stub/verify a class method, but I'm having difficulty with defined macros. I'm trying to test that one of my methods calls DDLogInfo.

It's defined like so in the CocoaLumberjack source

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

thanks!

Upvotes: 5

Views: 355

Answers (1)

Ryan Maloney
Ryan Maloney

Reputation: 1046

All standard DDLog macros call +[DDLog log:level:flag:context:file:function:line:tag:format:], so with OCMock, you would verify that DDLogInfo was called by:

- (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]]);
}

Unfortunately, with this strategy you must hard-code several values, as OCMock does not have a way to specify a generic non-pointer argument.

Upvotes: 1

Related Questions