我正在为我的ASP.NET核心站点编写单元测试,我需要能够为请求设置查询字符串。如何在ASP.NET Core中的单元测试中为请求设置查询字符串?
答案 0 :(得分:3)
首先必须构建Controller
- >的对象树。 ControllerContext
- > DefaultHttpContext
。 DefaultHttpContext
对象的request属性的类型为DefaultHttpRequest
。因此,如果您将HttpContext.Request
转换为DefaultHttpRequest
,则可以设置QueryString参数。
var controller = new FunController()
{
ControllerContext = new ControllerContext
{
HttpContext = new DefaultHttpContext()
}
};
controller.HttpContext.Request as DefaultHttpRequest).QueryString = new QueryString("?funfactor=100");
答案 1 :(得分:3)
如果您可以使用Integration testing
,也可以使用TestServer
方法。请在此处查看详细信息 - Testing controller logic in ASP.NET Core。在这种情况下,带有查询参数的控制器操作测试可能如下所示:
var hostBuilder = new WebHostBuilder()
.UseEnvironment("Testing")
.UseStartup<Startup>();
var server = new TestServer(hostBuilder);
var client = server.CreateClient();
HttpResponseMessage response = client.GetAsync("/api/mycontroller/things?param=value").Result;