Тестирование Xunit с использованием MediatR, CORS и MOQ - PullRequest
0 голосов
/ 18 апреля 2020

В настоящее время я пытаюсь написать модульный тест для метода действия, который возвращает один элемент. Ниже тест, который я пытаюсь написать. Я не слишком уверен, как написать модульный тест, и у меня есть две проблемы. Как смоделировать настройку для отправки вызова от посредника, и мне также нужно смоделировать DataContext aswell.

[Fact]
public async Task Activity_SendsQueryWithCorrectGUIDId()
{
   var id = Guid.Parse("c8b08528-5200-40d8-8d18-abda8cb5110c");
   var mock = new Mock<IMediator>();
   var sut = new ActivitiesController(mock.Object
   await sut.Details(id);
}

Это вызываемый контроллер.

public class ActivitiesController:ControllerBase
{
    private readonly IMediator _mediator;

    public ActivitiesController(IMediator mediator)
    {
        _mediator = mediator;
    }

    [HttpGet("{id}")]
    public async Task<ActionResult<Activity>> Details(Guid id)
    {
        return await _mediator.Send(new Details.Query { Id = id });
    }
}

This класс MediatR, который получает вызов;

public class Details
{
    public class Query : IRequest<Activity>
    {
        public Guid Id { get; set; }
    }

    public class Handler : IRequestHandler<Query, Activity>
    {
        private readonly DataContext _context;

        public Handler(DataContext context)
        {
            _context = context;
        }

        public async Task<Activity> Handle(Query request, CancellationToken cancellation)
        {
            var activity = await _context.Activities.FindAsync(request.Id);
            return activity;
        }
    }
}
...