Solución:
Pude inicializar el httpcontext y el encabezado de esta manera:
[TestMethod]
public void TestValuesController()
{
ValuesController controller = new ValuesController();
controller.ControllerContext = new ControllerContext();
controller.ControllerContext.HttpContext = new DefaultHttpContext();
controller.ControllerContext.HttpContext.Request.Headers["device-id"] = "20317";
var result = controller.Get();
//the controller correctly receives the http header key value pair device-id:20317
...
}
En lugar de burlarse del HTTPContext, probablemente sea una mejor idea asignar el encabezado a un parámetro del método. Por ejemplo, en el controlador al final de esta respuesta, el id
El parámetro se establece en el encabezado del valor con un nombre igual a “id-dispositivo” … La prueba unitaria se convierte en
[TestMethod]
public void TestValuesController()
{
ValuesController controller = new ValuesController();
var result = controller.GetHeaderValue("27");
Assert.AreEqual(result, "27");
}
Mientras tu pueden burlarse del HttpContext, en mi opinión es algo que debe evitarse a menos que no tenga otra opción. La documentación para FromHeaderAttribute se puede encontrar aquí FromHeaderAttribute Class.
public class ValuesController: Controller
{
public string GetHeaderValue([FromHeader(Name = "device-id")] string id)
{
return id;
}
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)