下面是我的 Controller 的方法:-
[HttpPost]
public ActionResult Search(SearchViewModel model)
{
string selection = Request.Form["Options"];
if (selection == "str1")
{
-----------------------------
}
}
它基于从 Request.Form 获取值的条件。但是 Request.Form 只提供 Get 属性,我无法在单元测试方法上设置它的值。有什么方法可以设置它的值吗?
最佳答案
以上方法都不适合我。我最终在没有 Mock 的情况下使用了以下内容。
DefaultHttpContext httpContext = new DefaultHttpContext();
httpContext.Request.Scheme = "http";
httpContext.Request.Host = new HostString("localhost");
var formCol = new FormCollection(new Dictionary<string,
Microsoft.Extensions.Primitives.StringValues>
{
{ "key1", "value1" },
{ "key2", "value2" }
});
httpContext.Request.ContentType = "application/x-www-form-urlencoded";
httpContext.Request.Form = formCol;
var context = new MyContext();
var controller = new MyController(context);
controller.ControllerContext = new ControllerContext {
HttpContext = httpContext
};
关于c# - 如何对 Request.Form [""] 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192633/