Как смоделировать сервис, внедренный HttpContext.RequestServices.GetService <> в производный контроллер? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть базовый Api-контроллер, определенный следующим образом:

[ApiController]
public abstract class BaseController : ControllerBase
{
    private IMediator _mediator;

    protected IMediator Mediator => _mediator ??= HttpContext.RequestServices.GetService<IMediator>();
}

Auth-контроллер, полученный из BaseController

public class AuthController : BaseController
{
    [HttpPost(ApiRoutes.Auth.Register)]
    public async Task<IActionResult> Register(UserRegistrationRequest request)
    {
        var response = await Mediator.Send(new UserRegistrationCommand(request.Email, request.Password));

        return Ok(response);
    }
}

Каким образом следует имитировать службу IMediator в модульных тестах? Когда сервисы вводились с использованием конструктора DI, я только что передавал имитированные сервисы конструктору в тестах, но в этом сценарии я не уверен, что имитировать, возможно, HttpContext?

1 Ответ

0 голосов
/ 23 апреля 2020

Вы должны издеваться над ним, используя библиотеку, такую ​​как Moq или NSubstitute. Затем подключите методы с использованием этих библиотек.

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