Comment "Isolateur Typemock" est-il moqueur de méthodes statiques?
-
13-09-2020 - |
Question
Comme certains d'entre vous le sauront, il n'est généralement pas possible de se moquer d'une méthode statique en .NET.
En moqueur, je veux remplacer une méthode dans une classe avec une autre méthode avec la même signature, généralement à des fins de test.
Les deux méthodes principales utilisées pour se moquer d'une méthode sont de le déclarer virtuelles ou de la définir dans une interface.Aucun de ces deux ne sont autorisés pour les méthodes statiques .net.
Cependant, un outil coûteux est appelé "Isolateur Typemock" qui permet une moqueur de méthodes statiques.Comment l'isolateur accomplit-il cet exploit apparemment impossible?
La solution
C'est dans le FAQ .
Fondamentalement, un faux Typemock instancite un nouvel objet du type d'origine et des crochets dans chaque méthode et appel de la propriété pour cet objet, redirigeant l'appel sur le faux et renvoyant les valeurs que vous spécifiez.Il utilise un vaudou profond dans le .NET Framework (le API .NET PROFILER , si vous êtes intéressé) faire cela, mais tout est «légitime».Techniquement, tout le monde peut construire un duplicata de Typemock, mais je n'ai pas encore vu un.