Контекст и делегат могут быть созданы с использованием существующих типов, чтобы избежать множества настроек, необходимых для макета экземпляра.
Например,
//Arrange
var controller = new SubjectControllerUnderTest(...);
var httpContext = new DefaultHttpContext();
var actionContext = new ActionContext {
HttpContext = httpContext,
RouteData = new RouteData(),
ActionDescriptor = new ActionDescriptor(),
}
var metadata = new List<IFilterMetadata>();
var context = new ActionExecutingContext(
actionContext,
metadata,
new Dictionary<string, object>(),
controller);
ActionExecutionDelegate next = () => {
var ctx = new ActionExecutedContext (actionContext, metadata, controller);
return Task.FromResult(ctx);
};
//Act
await controller.OnActionExecutionAsync(context, next);
//...