Afin d'appeler une méthode statique, vous aurez besoin d'une référence directe du type:
RolesService.IsUserInRole(...);
Dans ce cas, si vous voulez être en mesure et d'appeler la "dérivée" de la classe de la méthode statique, l'abandon de la "nouvelle" mot-clé vous permettra de:
MockRoleService.IsUserInRole(...);
et obtenir les attendus de l'appel de fonction.
Ma conjecture est que ce n'est pas ce que vous cherchez. Vous avez probablement certains appellent quelque part dans votre code comme l'ancien, et vous espérez qu'en utilisant un Moqueur outil pour créer une MockRoleService, vous seriez l'injection de ce nouveau "type" à la place de l'ancien. Malheureusement, ce n'est pas la façon dont il fonctionne avec la statique.
Un moqueur outil va créer une instance de la moqué de type et permettra d'injecter que la place d'un appel à construire le type réel. Un appel à une méthode statique ignore tout cela.
Comme Aaronaught mentionné, vous devriez probablement faire de cette méthode normale de la méthode d'instance. Cela permettra à votre fantaisie service pour être correctement injecté à la place de votre RolesService, vous permettent de déplacer la déclaration de méthode dans votre IRolesService interface, et de la remplacer dans votre MockRoleService mise en œuvre. Ensuite, dans le code où que vous "obtenez" un RolesService, il vous suffit d'appeler le membre de l'instance au lieu de la statique.
IRolesService svc = MyServiceInjector.GetService<IRolesService>();
svc.IsUserInRole(...);