Не пробовал это, но в основном вам нужно позвонить в службу регистрации, а затем получить контроллер из этого.Если необходимые службы, необходимые для активации контроллера, отсутствуют, он должен выдать InvalidOperationException
, который вы можете проверить.
Однако по умолчанию сами контроллеры фактически не зарегистрированы в коллекции служб.Есть способ сделать это, но использовать его только для включения тестирования - плохая идея.Вместо этого вам следует просто положиться на IControllerActivator
:
var services = // call method that registers services;
var provider = services.Build();
var activator = provider.GetRequiredService<IControllerActivator>();
var context = new ControllerContext { ... };
var controller = activator.Create(context);
// assert something useful
ControllerContext
- это то, что сообщает активатору, какой контроллер создать, и какой метод действия вызвать.Таким образом, вам нужно будет смоделировать это с информацией, необходимой для каждого конкретного контроллера.