Bei einem großen Projekt ist es uns recht gut gelungen, ArcObjects-Code von unserer Geschäftslogik zu isolieren. Das ist im Allgemeinen der richtige Weg, würde ich sagen, anstatt zu versuchen, alles zu verspotten, selbst wenn es möglich ist, spöttische Frameworks zu verwenden, um einen Teil des Weges zu finden.
Fragen Sie sich, warum Sie sich verspotten müssen. In der Regel liegt dies an einer fehlenden Abstraktion. Denken Sie an kleine Aufgaben und minimieren Sie die Oberfläche des riesigen, hässlichen ArcObject-Monsters. Vermeiden Sie das Herumziehen von ArcObject-Typen, nur weil ein Teil davon irgendwo benötigt wird.
Ich kann ein konkretes Beispiel aus unserem Projekt geben. Ein Teil des Codes schien von IMxDocument abzuhängen. Es stellte sich heraus, dass der einzige Grund darin bestand, dass die aktive Ansicht aktualisiert werden musste. Also haben wir stattdessen eine IViewRefresher-Schnittstelle erstellt und nur daran gearbeitet. leicht zu verspotten und zu testen. Darüber hinaus wird die Absicht des Codes viel klarer und die Versuchung für jemanden beseitigt, mit dem IMxDocument lustige Dinge zu tun, die er eigentlich nicht tun sollte, weil wir hier nur aktualisieren wollten. Die gleiche Übung kann mit einem Großteil des ArcObjects-Codes durchgeführt werden.
Außerdem haben wir den gesamten Zugriff auf Feature-Classes in typsichere Wrapper eingeschlossen und erneut verspottbaren Code bereitgestellt, der den Geschäftscode vor ArcObjects schützt.
Wir haben nicht einmal die Verwendung der Geometrietypen von ArcObjects erörtert, aber derzeit erlauben wir, dass diese Schnittstellen direkt in unserem Code verwendet werden. (Es sind jedoch nur Schnittstellenkenntnisse zulässig, und alle Instanziierungen von Geometrien verwenden unsere eigene Geometriefabrik.)
Zusammenfassend kann ich sagen, dass ich das Verspotten nicht entmutige, aber ich würde das Verspotten auf einer anderen Abstraktionsebene als ArcObjects fördern.