Moin,
ich hätte da gern eine Frage.
Aktuell hantiere ich mit einer Factory umher, die mir je nach Dateiname eine spezifische Instanz zurückgeben soll.
Das läuft soweit auch recht fein.
Der Test ist sinngemäß, wenn nicht gar wörtlich:
Was passiert sollte offensichtlich sein. Ich definiere ein Pasteboard Item mit einem Dummy-Pfad und gebe dieses Item an die Factory.
Ich möchte eine Objektinstanz zurückbekommen (wer möchte das nicht!), die dem ImporterProtocol entspricht (damit alle Importer dieselbe Schnittstelle zum Zugriff auf ihre Daten liefern) und natürlich soll die Instanz für eine Datei .kml vom Typ MyKMLImporter sein.
Ist sie aber nicht.
Genau genommen lautet die Aussage:
Ja, da steht "MyKMLImporter" != "MyKMLImporter".
Stutzig geworden bin ich, weil der Test zuerst stumpf hieß:
und fehl schlug.
Die einzige Änderung, die den Test jetzt scheitern lässt: das Protokoll hat eine property 'delegate' dazu bekommen, die dann entsprechend in den einzelnen spezifischen Klassen synthetisiert werden.
Wie kann ich jetzt bitte herausfinden, warum die Klasse offenbar unterschiedlich sei bzw. wie der Test dann lauten muss um für mich sicher zu gehen, dass es sich um die gewünschte Instanz handelt?
ich hätte da gern eine Frage.
Aktuell hantiere ich mit einer Factory umher, die mir je nach Dateiname eine spezifische Instanz zurückgeben soll.
Das läuft soweit auch recht fein.
Der Test ist sinngemäß, wenn nicht gar wörtlich:
Quellcode
- - (void)testKMLImporterCreation
- {
- [[self mockItem] setString:@"file:///dummy.kml" forType:@"public.file-url"];
- id importer = [MyImporterFactory importerForPasteboardItem:[self mockItem]];
- XCTAssertNotNil(importer, @"Importer creation failed");
- XCTAssertTrue([importer conformsToProtocol:NSProtocolFromString(@"ImporterProtocol")], @"Created importer doesn't implement protocol");
- XCTAssertEqualObjects([importer class], [MyKMLImporter class], @"Class mismatch");
- }
Was passiert sollte offensichtlich sein. Ich definiere ein Pasteboard Item mit einem Dummy-Pfad und gebe dieses Item an die Factory.
Ich möchte eine Objektinstanz zurückbekommen (wer möchte das nicht!), die dem ImporterProtocol entspricht (damit alle Importer dieselbe Schnittstelle zum Zugriff auf ihre Daten liefern) und natürlich soll die Instanz für eine Datei .kml vom Typ MyKMLImporter sein.
Ist sie aber nicht.
Genau genommen lautet die Aussage:
Test Case '-[MyImporterFactoryTests testKMLImporterCreation]' started.
2014-08-04 19:33:21.442 MapMatcher[3808:303] Available type: public.file-url
2014-08-04 19:33:21.442 MapMatcher[3808:303] Got file ending kml
/Develop/mapmatcher/MapMatcher/MapMatcherTests/MyImporterFactoryTests.m:58: error: -[MyImporterFactoryTests testKMLImporterCreation] : (([importer class]) equal to ([MyKMLImporter class])) failed: ("MyKMLImporter") is not equal to ("MyKMLImporter") - Class mismatch
Test Case '-[MyImporterFactoryTests testKMLImporterCreation]' failed (0.001 seconds).
Ja, da steht "MyKMLImporter" != "MyKMLImporter".
Stutzig geworden bin ich, weil der Test zuerst stumpf hieß:
und fehl schlug.
Die einzige Änderung, die den Test jetzt scheitern lässt: das Protokoll hat eine property 'delegate' dazu bekommen, die dann entsprechend in den einzelnen spezifischen Klassen synthetisiert werden.
Wie kann ich jetzt bitte herausfinden, warum die Klasse offenbar unterschiedlich sei bzw. wie der Test dann lauten muss um für mich sicher zu gehen, dass es sich um die gewünschte Instanz handelt?
«Applejack» "Don't you use your fancy mathematics to muddle the issue!"
Iä-86! Iä-64! Awavauatsh fthagn!
Iä-86! Iä-64! Awavauatsh fthagn!
kmr schrieb:
Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P