2015-04-30 8 views
5

Posso eseguire lo stub/verificare un metodo di classe, ma ho difficoltà con le macro definite. Sto provando a testare che uno dei miei metodi chiama DDLogInfo.Come stub CocoaLumberjack o NSLog con OCMockito

E 'definita in questo modo nella fonte CocoaLumberjack

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

grazie!

risposta

1

Tutti DDLog macro standard chiamare +[DDLog log:level:flag:context:file:function:line:tag:format:], quindi con OCMock, si potrebbe verificare il DDLogInfo è stato chiamato da:

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

Purtroppo, con questa strategia è necessario hard-code diversi valori, come OCMock non dispone di un modo per specificare un argomento generico non puntatore.