Как смоделировать ActionExecutingContext и ActionExecutionDelegate для модульного тестирования метода «OnActionExecutionAsyn c» с использованием инфраструктуры MOQ - PullRequest
1 голос
/ 22 января 2020

Мне нужно смоделировать ActionExecutingContext и ActionExecutionDelegate для следующего метода:

public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
}

1 Ответ

1 голос
/ 22 января 2020

Контекст и делегат могут быть созданы с использованием существующих типов, чтобы избежать множества настроек, необходимых для макета экземпляра.

Например,

//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);

//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...