Ich habe eine App, die eine Cocoapod enthält, die die Engine hinter der App enthält. In diesem Cocoapod habe ich eine gemeinsame Instanz der Basisklasse.`Synchronisiert` funktioniert nicht in XCTest
+ (Restaurant *)current {
@synchronized(self) {
if (current == nil) {
current = [[Restaurant alloc] initWithId:0];
}
}
return current;
}
Nun, ich habe ein paar Untestests auf anderen Code in meiner App. Das sieht wie folgt aus:
- (void)testPOSTCodeGeneration {
[[Restaurant current] setMainTable:4];
NSLog(@"Main table in test: %d", [[Restaurant current] mainTable]);
Generator *generator = [[Generator alloc] init];
XCTAssertEqualObjects([[Restaurant current] mainTable], generator.table);
}
Und in Generator.m
, das tue ich etwas entlang der Linien von dieser:
- (void)init {
...
self.table = [[Restaurant current] mainTable];
...
}
Das Merkwürdige ist, dass dieser Test fehlschlägt. mainTable
hat den Standardwert 0, sofern keine andere Nummer festgelegt wurde. Also, obwohl ich es auf 4 (und Main table in test:
logs a 4) setzt, gibt es 0 zurück. Ist @synchronized
inkompatibel mit Xcode Unit Tests? Oder weiß jemand was noch hier los ist?