2015-04-13 12 views
5

Sto usando da poco OCMock per il mio test di unità. Devo interrompere il metodo objectForInfoDictionaryKey: da NSBundle. Ho fatto quanto segue:OCMock non stub metodo NSBundle

self.bundleMock = OCMClassMock([NSBundle class]); 
OCMStub([self.bundleMock objectForInfoDictionaryKey:@"GITHash"]).andReturn(@"c424242"); 
; 

Ecco la chiamata Voglio stub:

NSString * appHashString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GITHash"]; 

Ma nulla sembra essere stubbed, in fase di esecuzione ho ancora il valore "corretto".

Cosa ho fatto di sbagliato?

risposta

5

Potrei essere misremembering, ma penso che è necessario utilizzare partialMockForObject deridere l'istanza restituita da [NSBundle mainBundle], invece di beffardi classe NSBundle perché objectForInfoDictionaryKey è un metodo di istanza, non è un metodo di classe.

+0

Grazie per la risposta! Non avevo notato questo metodo prima! – Loadex

+0

Contento di aver potuto aiutare – bplattenburg

+0

Quindi, invece del codice nella domanda, uso esattamente cosa? – Jeff

Problemi correlati