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!
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With