c# - 如何对 Request.Form [""] 进行单元测试?

标签 c# forms unit-testing request moq

下面是我的 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/

相关文章:

c# - HttpClient - 忽略 404

C# XNA Box2d : What kind of joints for a ragdoll?

forms - Codeigniter 对空字段进行回调?

java - 如何使用内存数据库编写测试用例?

c# - FileContentResult 和 FileStreamResult 的区别

html - 如何右对齐对象下的表单按钮?

javascript - Ajax 调用 php 脚本从多个复选框表单发送值

typescript - NestJS - 测试套件无法运行从 'src/article/article.entity' 找不到模块 'comment/comment.entity.ts'

c# - 如何知道传递给方法的变量/属性名称?

c# - 如何从未知的 com 对象接口(interface)(例如连接点)获取 guid?