Como os métodos estáticos simulados "Isolador TypeMock"?
-
13-09-2020 - |
Pergunta
Como alguns de vocês saberão, geralmente não é possível zombar de um método estático no .NET.
por zombar, quero substituir um método em uma classe com outro método com a mesma assinatura, geralmente para fins de teste.
Os dois métodos principais usados para zombar de um método são declará-lo virtual ou defini-lo em uma interface.Nenhum desses dois é permitido para os métodos estáticos .NET.
No entanto, há uma ferramenta cara chamada "isolador de TypeMock", que permite zombaria de métodos estáticos.Como o isolador realiza essa façanha aparentemente impossível?
Solução
Está no FAQ .
Basicamente, um falso falso instancia um novo objeto do tipo original e ganchos em cada método e chamada de propriedade para esse objeto, redirecionando a chamada para o falso e retornando os valores que você especifica.Ele usa algum voodoo profundo no .NET Framework (o API do Profiler .NET , se você estiver interessado) para fazer isso, mas é tudo "legítimo".Tecnicamente qualquer um pode construir uma duplicata de TypeMock, mas ainda tenho que ver um.