Verspottung einer Microsoft DLL

8

Ich habe eine Anwendung, die auf eine Microsoft DLL (Exchange Web Services) verweist. In meinem Komponententest möchte ich die Microsoft DLL durch ein Mock ersetzen.

Was mit anderen DLLs funktioniert, funktioniert nicht mit dieser DLL, da ich eine Ausnahme bekomme

  

Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblierungsreferenz

überein

Ich habe verifiziert, dass es die gleiche Assembly-Version hat, aber ich habe gesehen, dass die Microsoft DLL digital signiert ist, also hat sie einen PublicKeyToken. Könnte das sein, wonach meine Anwendung sucht? Eine ähnlich signierte DLL?

Gibt es eine Möglichkeit, eine DLL zu referenzieren, ohne ihren publickeytoken zu benötigen?

Danke

    
Yiftach 15.03.2011, 19:09
quelle

1 Antwort

13

Sie können eine signierte DLL nicht vortäuschen. (Wenn du könntest, wirst du von der Mafia angestellt werden ...)

Mock den Code, der auf Code in dieser DLL zugreift.

Erstellen Sie eine Fassade (wenn Sie sie nicht haben), die den Zugriff auf Methoden in der Exchange-DLL umschließt. Dann können Sie in Ihren Tests eine Scheinfassade bereitstellen.

Es ist eine gute Design-Praxis, Ihren Code mit Hilfe von Fassaden / Wrappern von jeglichem Code Dritter (Assemblies, Web Services, Control) abzuschirmen. Dies minimiert das Risiko von Auswirkungen, falls sich der Code des Dritten ändert, d.h. Upgrade auf eine neuere Version der DLL (die erforderlichen Änderungen betreffen nur die Fassade) und helfen beim Testen.

    
Jakub Konecki 15.03.2011 19:12
quelle

Tags und Links