gpt4 book ai didi

c# - 用于单元测试 .NET 核心 MVC Controller 的模拟 HttpContext?

转载 作者:太空狗 更新时间:2023-10-29 19:47:41 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com