我在 Controller 中有一个函数,我正在对其进行单元测试,该函数期望 http 请求 header 中的值。我无法初始化 HttpContext,因为它是只读的。
我的 Controller 函数需要“device-id”的 http 请求 header 值
[TestMethod]
public void TestValuesController()
{
ValuesController controller = new ValuesController();
//not valid controller.HttpContext is readonly
//controller.HttpContext = new DefaultHttpContext();
var result = controller.Get();
Assert.AreEqual(result.Count(), 2);
}
有没有不使用第三方库的直接方法?
最佳答案
我能够以这种方式初始化 httpcontext 和 header :
[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
...
}
关于c# - 用于单元测试 .NET 核心 MVC Controller 的模拟 HttpContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370077/