Em um projeto grande, conseguimos muito bem isolar o código do ArcObjects da nossa lógica de negócios. Geralmente, esse é o caminho a percorrer, eu diria, em vez de tentar zombar de tudo, mesmo que seja possível usar estruturas de zombaria para fazer parte do caminho.
Pergunte a si mesmo: por que você sente necessidade de zombar? Normalmente, isso ocorre devido a uma abstração ausente. Pense em pequenas responsabilidades e minimize a superfície do enorme e feio monstro ArcObject. Evite arrastar os tipos de ArcObject apenas porque algum aspecto deles é necessário em algum lugar.
Eu posso dar um exemplo concreto do nosso projeto. Uma parte do código parecia depender do IMxDocument. O único motivo foi que a visão ativa precisava ser atualizada. Então criamos uma interface IViewRefresher e só trabalhamos nisso; fácil de zombar e testar. Além disso, isso torna a intenção do código muito mais clara e elimina a tentação de alguém começar a fazer coisas engraçadas com o IMxDocument que elas não deveriam fazer porque tudo o que queríamos fazer aqui era atualizar. O mesmo exercício pode ser feito com grande parte do código do ArcObjects.
Além disso, empacotamos todo o acesso a classes de recursos em invólucros de tipo seguro, novamente fornecendo código simulável que protege o código comercial do ArcObjects.
Discutimos nem mesmo o uso dos tipos de geometria do ArcObjects, mas atualmente permitimos que essas interfaces sejam usadas diretamente em nosso código. (No entanto, apenas o conhecimento da interface é permitido e todas as instanciações de geometrias usam nossa própria fábrica de geometria.)
Em resumo, não desencorajo a zombaria, mas incentivaria a zombaria em um nível de abstração diferente do ArcObjects.