In den meisten meiner Klassen, die mit Ausfällen arbeiten mache ich die Standardwerte Objekt einstellbar:Wie mit NSUserDefaults testen?
@property(retain) NSUserDefaults *defaults;
Diese Prüfung machen soll einfacher:
// In a nearby test class:
- (void) setUp {
[super setUp];
NSUserDefaults *isolatedDefaults = [[NSUserDefaults alloc] init];
[someObjectBeingTested setDefaults:isolatedDefaults];
}
Aber jetzt fand ich heraus dann, wenn ich erstellen ein neues Standard-Objekt, da sind schon einige Werte drin. Ist das möglich? Ich dachte, ich könnte ein leeres, isoliertes Standardobjekt erstellen, indem ich -init
aufrufen. Habe ich irgendwo im Testcode einen Fehler oder muss ich wirklich etwas Komplexeres machen (wie Stubbing oder Mocking), wenn ich meinen Standard-basierten Code testen möchte?
Danke für die Erstellung! – Palimondo
sehr schön, danke! Ich benutze jetzt Ihre Klasse, aber anstatt 'NSUserDefaults' als Parameter zu' someObjectBeingTested' zu injizieren, verwende ich 'Kiwi' mit seiner spöttischen Fähigkeit zu stub. Verwenden Sie etwas wie: 'id transientDefaults = [NSUserDefaults transientDefaults]; [NSUserDefaults stub: @selector (standardUserDefaults) undReturn: transientDefaults]; ' – kernix