Mock HttpRequest en ASP.NET Core Controller

Estoy creando una API web en ASP.NET Core, y quiero probar unitariamente los controladores.

Inyecto una interfaz para acceso a datos, que puedo burlarme fácilmente. Pero el controlador tiene que verificar los encabezados en la Solicitud de un token, y esa Solicitud no parece existir cuando simplemente instancia el controlador yo mismo, y también es get-only, por lo que ni siquiera puedo configurarlo manualmente. Encontré muchos ejemplos para burlarse de un ApiController, pero ese no es el núcleo de .NET. También hay muchos tutoriales y ejemplos de cómo probar los controladores de núcleo .net, pero ninguno de ellos usó HttpRequest.

Construí un MCVE para demostrar esto:

[Produces("application/json")]
[Route("api/Players")]
public class PlayersController : Controller
{
    private IAccessor accessor;

    public PlayersController(IAccessor ac = null):base()
    {
        accessor = ac ?? AccessorFactory.GetAccessor();
    }

    /// <summary>
    /// Get all players. Must be logged in.
    /// </summary>
    /// <returns>Ok or Unauthorized.</returns>
    [HttpGet]
    public IActionResult Get()
    {
        Player client = accessor.GetLoggedInPlayer(Request.Headers["token"]); // NRE here because Request is null
        if (client == null) return Unauthorized();
        return Ok(accessor.GetAllPlayers());

    }
}    

Estoy usando Moq y MSTest en mi proyecto de prueba e inyecto un IAccessor burlado. ¿Cómo inyecto la solicitud o la inicializo con el controlador? Supongo que mi último recurso sería la reflexión, pero realmente quiero evitar eso.

Respuestas a la pregunta(1)

Su respuesta a la pregunta