Чтобы вызвать статический метод, вам понадобится прямая ссылка типа:
RolesService.IsUserInRole(...);
В этом случае, если вы хотите иметь возможность и вызывать статический метод «производного» класса, удаление ключевого слова «new» позволит вам:
MockRoleService.IsUserInRole(...);
и получите ожидаемый вызов функции.
Я предполагаю, что это не то, что вы ищете. Скорее всего, в вашем коде есть какой-то вызов, похожий на предыдущий, и вы надеетесь, что с помощью инструмента Mocking для создания MockRoleService вы внедрите этот новый «тип» вместо старого. К сожалению, это не так со статикой.
Инструмент mocking создаст экземпляр типа mocked out и внедрит его вместо вызова для создания реального типа. Вызов статического метода пропускает все это.
Как уже упоминал Аарона, вы, вероятно, должны сделать этот метод обычным методом экземпляра. Это позволит правильно внедрить ваш фиктивный сервис вместо вашего обычного RolesService, позволит вам переместить объявление метода в интерфейс IRolesService и переопределить его в вашей реализации MockRoleService. Затем в коде, где вы «получаете» RolesService, вы просто вызываете член экземпляра вместо статического.
IRolesService svc = MyServiceInjector.GetService<IRolesService>();
svc.IsUserInRole(...);