MOQ - wie man eine Schnittstelle verspottet, die in eine andere Schnittstelle umgewandelt werden muss?

Was ich tun möchte, ist, ein MOQ für I1 zu konstruieren - was in Ordnung ist ... Im Verlauf der Methode, die ich teste und die dieses Mock verwendet, muss ich es jedoch in I2 umwandeln, um auf einige Eigenschaften zuzugreifen, die es nicht sind auf I1

Interface I1 
{ int AProperty{get;set;}}

Interface I2
{int AnotherProperty{get;set;}}

Ich habe dann einige Objekte

Class O1 : I1 {}

un

Class O2 : O1 , I2 {}

das Problem ist, dass ich eine Instanz eines I2-Implementierungsobjekts in I1 umwandeln kann, um auf die Methoden zuzugreifen, die über diese Schnittstelle implementiert werden. Im Code ist dies kein Problem und alles funktioniert wie erwartet.

Das einzige Problem tritt beim Schreiben eines Komponententests für diese Klasse auf.

Die Schnittstellen stellen auch eine Methode mit dem Namen GetNewInstance bereit, die eine initialisierte Instanz des implementierenden Objekts zurückgibt, das in die IGetNewInstance-Schnittstelle umgewandelt wurde.

Wenn Sie jedoch versuchen, dieses zurückgegebene Objekt vom Typ I2 in I1 umzuwandeln, ergibt dies eine Nullreferenz. Dies ist sinnvoll, da das Mock-Objekt, das I2 implementiert, nicht von etwas erbt, das I1 erbt.

die Frage ist, wie ich das Scheinobjekt zwingen kann, von beiden I1 und I2 gleichzeitig zu erben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage