模拟HttpContext来对.NET核心MVC控制器进行单元测试? [英] Mock HttpContext for unit testing a .NET core MVC controller?
本文介绍了模拟HttpContext来对.NET核心MVC控制器进行单元测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在单元测试的控制器中有一个函数,该函数期望http请求的标头中的值.我无法初始化HttpContext,因为它是只读的.
I have a function in a controller that I am unit testing that expects values in the header of the http request. I can't initialize the HttpContext because it is readonly.
我的控制器功能期望"device-id"的http请求标头值为
My controller function expects a http request header value for "device-id"
[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);
}
有没有使用第三方库的简单方法?
Is there a straight-forward way to do this without using a third party library?
推荐答案
我能够通过以下方式初始化httpcontext和标头:
I was able to initialize the httpcontext and header in this way:
[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
...
}
这篇关于模拟HttpContext来对.NET核心MVC控制器进行单元测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文