Ich versuche, einen Einheitstest für eine einfache Fabrikklasse zu schreiben, die eines von mehreren möglichen Implementierungsobjekten erstellt und es als Schnittstellenreferenz zurückgibt.
Dunnit hat ein eingebautes Verfahren, CheckIs(AObject: TObject; AClass: TClass; msg: string)
die aufgrund ihres Namens und der Parameter, die sie akzeptiert, den Test nicht bestehen sollte, wenn der Klassentyp des Objekts nicht mit dem erwarteten Typ übereinstimmt. Das einzige Problem ist, dass eine Objektreferenz und nicht eine Schnittstellenreferenz erforderlich ist.
Ich versuche also, die CheckTrue
und führen Sie den Vergleich in den Körper des Tests, aber ich bin nicht so vertraut mit Delphi's Typüberprüfung Unterstützung als ich mit C#'s bin.
Ich kenne die is
Operator kommt nicht in Frage, da er nur mit Objektreferenzen funktioniert.
CheckTrue(LMyInterfaceReference {comparison here} TMyClass);
Irgendwelche Vorschläge?
Ich verwende übrigens Delphi 2009 und habe daher keinen Zugriff auf die neue RTTI-Unterstützung, die in 2010+ hinzugefügt wurde.